# 模型权重初始化

模型权重初始化会对我们模型训练造成很大影响。初始权重在一定程度上决定了模型的收敛情况，合理的权重可以加快梯度下降收敛的速度。若权重过大，将造成梯度爆炸，而权重过小，则易造成信息丢失。我们对生成器中的ConvTranspose2d、BatchNorm2d和判别器中的Conv2d、BatchNorm2d进行参数初始化，使用PyTorch中的nn.init.normal_方法和 nn.init.constant_方法。前者将所选参数按照设定值，进行符合正态分布的权重初始化；后者将所选参数按照设定的常数进行初始化。如下示代码，对于卷积层，其权重按均值为0，标准差为0.02的正态分布进行初始化；对于BatchNorm层，其权重被初始化为均值为1.0，标准差为0.02的正态分布下的随机值，并设置偏置为常数0。

生成器网络和判别器网络初始化后，需分配到设备device中去。device是我们先前设置参数时得到的表示设备的变量，如果我们使用的计算机支持CUDA，那么我们可以把神经网络模型和张量都通过to(device)方法放到GPU里训练，这将大大提高训练速度。

:::{literalinclude} ../codes/chapter_4_2_7_01.py
:caption: chapter_4_2_7_01.py
:language: python
:linenos:
:::
