深度卷积生成对抗网络(DCGAN)原理与实现,小红书android面试题
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~给大家准备的学习资料包括但不限于:Python 环境、pycharm编辑器/永久激活/翻译插件python 零基础视频教程Python 界面开发实战教程Python 爬虫实战教程Python 数据
print(train_x.shape)
dataset = tf.data.Dataset.from_tensor_slices(train_x)
dataset = dataset.shuffle(1000)
dataset = dataset.batch(batch_size=batch_size, drop_remainder=True)
网络
网络由鉴别网络与生成网络构成
鉴别网络
class Discriminator(keras.Model):
def init(self):
super(Discriminator,self).init()
filters = 64
self.conv1 = keras.layers.Conv2D(filters,4,2,‘valid’,use_bias=False)
self.bn1 = keras.layers.BatchNormalization()
self.conv2 = keras.layers.Conv2D(filters*2,4,2,‘valid’,use_bias=False)
self.bn2 = keras.layers.BatchNormalization()
self.conv3 = keras.layers.Conv2D(filters*4,3,1,‘valid’,use_bias=False)
self.bn3 = keras.layers.BatchNormalization()
self.conv4 = keras.layers.Conv2D(filters*8,3,1,‘valid’,use_bias=False)
self.bn4 = keras.layers.BatchNormalization()
#全局池化
self.pool = keras.layers.GlobalAveragePooling2D()
self.flatten = keras.layers.Flatten()
self.fc = keras.layers.Dense(1)
def call(self,inputs,training=True):
x = inputs
x = tf.nn.leaky_relu(self.bn1(self.conv1(x),training=training))
x = tf.nn.leaky_relu(self.bn2(self.conv2(x),training=training))
x = tf.nn.leaky_relu(self.bn3(self.conv3(x),training=training))
x = tf.nn.leaky_relu(self.bn4(self.conv4(x),training=training))
x = self.pool(x)
x = self.flatten(x)
logits = self.fc(x)
return logits
生成网络
class Generator(keras.Model):
def init(self):
super(Generator,self).init()
filters = 64
self.conv1 = keras.layers.Conv2DTranspose(filters*4,4,1,‘valid’,use_bias=False)
self.bn1 = keras.layers.BatchNormalization()
self.conv2 = keras.layers.Conv2DTranspose(filters*3,4,2,‘same’,use_bias=False)
self.bn2 = keras.layers.BatchNormalization()
self.conv3 = keras.layers.Conv2DTranspose(filters*1,4,2,‘same’,use_bias=False)
self.bn3 = keras.layers.BatchNormalization()
self.conv4 = keras.layers.Conv2DTranspose(3,4,2,‘same’,use_bias=False)
def call(self,inputs,training=False):
x = inputs
x = tf.reshape(x,(x.shape[0],1,1,x.shape[1]))
x = tf.nn.relu(x)
x = tf.nn.relu(self.bn1(self.conv1(x),training=training))
x = tf.nn.relu(self.bn2(self.conv2(x),training=training))
x = tf.nn.relu(self.bn3(self.conv3(x),training=training))
x = self.conv4(x)
x = tf.tanh(x)
return x
网络训练
训练时可以训练鉴别器多次然后训练一次生成器
定义损失函数
def celoss_ones(logits):
计算属于与标签为1的交叉熵
y = tf.ones_like(logits)
loss = keras.losses.binary_crossentropy(y, logits, from_logits=True)
return tf.reduce_mean(loss)
def celoss_zeros(logits):
计算属于与标签为0的交叉熵
y = tf.zeros_like(logits)
loss = keras.losses.binary_crossentropy(y, logits, from_logits=True)
return tf.reduce_mean(loss)
def d_loss_fn(generator, discriminator, batch_z, batch_x, is_training):
计算鉴别器的损失函数
采样生成图片
fake_image = generator(batch_z, is_training)
判定生成图片
d_fake_logits = discriminator(fake_image, is_training)
判定真实图片
d_real_logits = discriminator(batch_x, is_training)
真实图片与1之间的误差
d_loss_real = celoss_ones(d_real_logits)
生成图片与0之间的误差
d_loss_fake = celoss_zeros(d_fake_logits)
合并误差
loss = d_loss_fake + d_loss_real
return loss
def g_loss_fn(generator, discriminator, batch_z, is_training):
#计算生成器的损失函数
采样生成图片
fake_image = generator(batch_z, is_training)
在训练生成网络时,需要迫使生成图片判定为真
d_fake_logits = discriminator(fake_image, is_training)
计算生成图片与1之间的误差
loss = celoss_ones(d_fake_logits)
return loss
实例化网络及优化器
#定义超参数
#潜变量维度
z_dim = 100
#epoch大小
epochs = 300
#批大小
batch_size = 64
#学习率
lr = 0.0002
is_training = True
#实例化网络
discriminator = Discriminator()
discriminator.build(input_shape=(4,32,32,3))
discriminator.summary()
generator = Generator()
generator.build(input_shape=(4,z_dim))
generator.summary()
#实例化优化器
g_optimizer = keras.optimizers.Adam(learning_rate=lr,beta_1=0.5)
d_optimizer = keras.optimizers.Adam(learning_rate=lr,beta_1=0.5)
训练
#统计损失值
d_losses = []
g_losses = []
for epoch in range(epochs):
for _,batch_x in enumerate(dataset):
batch_z = tf.random.normal([batch_size,z_dim])
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
s://img-blog.csdnimg.cn/d29631674929476f9c3b30f7ff58dff0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-5vNjZgAh-1712814564274)]

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)