文章目录
- 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
- 🍖 原作者:K同学啊 | 接辅导、项目定制
本文环境:
系统环境:
语言:Python3.7.8
编译器:VSCode
深度学习框架:torch 1.13.1
是否GPU训练:CPU
本周代码基本和G3周一致,个别地方有修改:
(1)epoch=300
(2)绘制Loss图
(3)选择训练好的epoch=300时的生成器模型来生成手势
(4)数据集可视化部分选择显示第一个批次的图片
训练持续时间:7.17日23:00-7月18日08:12,耗时9h12min
本次学习的重点:predictions.permute(0,2,3,1)
,该函数用于对张量的维度进行重新排列,生成指定图像就是靠这个函数,Pytorch框架才有的
一、准备数据 & 环境
2. 数据可视化
# 可视化第一个batch的数据
def show_images(dl):
for images, _ in dl:
fig, ax = plt.subplots(figsize=(10, 10))
ax.set_xticks([]); ax.set_yticks([])
ax.imshow(make_grid(images.detach(), nrow=16).permute(1, 2, 0))
break
show_images(train_loader)
# def show_batch(dl):
# for images, _ in dl:
# show_images(images)
# break
# show_batch(train_loader) #显示图片
print("===============1.2 数据可视化 End============\n")
二、构建模型
print("===============2. 构建模型================")
latent_dim = 100
n_classes = 3
embedding_dim = 100
# 自定义权重初始化函数,用于初始化生成器和判别器的权重
def weights_init(m):
# 获取当前层的类名
classname = m.__class__.__name__
# 如果当前层是卷积层(类名中包含 'Conv' )
if classname.find('Conv') != -1:
# 使用正态分布随机初始化权重,均值为0,标准差为0.02
torch.nn.init.normal_(m.weight, 0.0, 0.02)
# 如果当前层是批归一化层(类名中包含 'BatchNorm' )
elif classname.find('BatchNorm') != -1:
# 使用正态分布随机初始化权重,均值为1,标准差为0.02
torch.nn.init.normal_(m.weight, 1.0, 0.02