首页 理论教育 深度合成示例代码:生成器

深度合成示例代码:生成器

时间:2023-11-18 理论教育 版权反馈
【摘要】:示例代码如下:def build_generator:noise_shape=model=Sequential()#layer1>>model. addmodel. addmodel. add#layer2>>model. addmodel. addmodel. add#layer3>>model. addmodel. addmodel. add#layer4>>#np. prod返回数组内元素的乘积model. add#784=>model. addmodel. summary()noise=Inputimg=modelreturn Model从上面的代码可以看出,生成器采用了包含三个隐含层的全连接网络,输入为长度100的向量,输出为长度784的向量,对应28×28×1的图像。此外,生成器网络的隐含层采用了LeakyReLU激活函数,输出层采用了tanh激活函数。

深度合成示例代码:生成器

生成网络的作用是输入一行正态分布随机数,生成MNIST手写体图片,因此它的输入是一个随机向量,输出为手写数字图片。这里定义向量长度为100,图像大小为(28,28,1)。示例代码如下:

def build_generator(self):

noise_shape=(100,)

model=Sequential()

#layer1(None,100)>>(None,256)

model. add(Dense(256,input_shape=noise_shape))

model. add(LeakyReLU(alpha=0.2))

model. add(BatchNormalization(momentum=0.8))

#layer2(None,256)>>(None,5 12)

model. add(Dense(5 12))

model. add(LeakyReLU(alpha=0.2))

model. add(BatchNormalization(momentum=0.8))

#layer3(None,5 12)>>(None,1024)

model. add(Dense(1024))(www.xing528.com)

model. add(LeakyReLU(alpha=0.2))

model. add(BatchNormalization(momentum=0.8))

#layer4(None,1024)>>(None,784)

#np. prod返回数组内元素的乘积

model. add(Dense(np.prod(self.img_shape),activation='tanh'))

#784=>(28,28,1)

model. add(Reshape(self.img_shape))

model. summary()

noise=Input(shape=noise_shape)

img=model(noise)

return Model(noise, img)

从上面的代码可以看出,生成器采用了包含三个隐含层的全连接网络,输入为长度100的向量,输出为长度784的向量,对应28×28×1的图像。其目标是将一维的向量转换为对应图像的二维矩阵,代码中采用了批量标准化BatchNormaliza-tion。其目的是对数据进行预处理,让平均值接近于0,标准差接近1,可以消除数据在数值上的大幅变化对网络学习的影响,突出数据的概率分布特点,有助于加速网络收敛。此外,生成器网络的隐含层采用了LeakyReLU激活函数,输出层采用了tanh激活函数。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈