DoctorZhao

定义网络,莫凡讲的都是用sequential搭

定义优化器, G=torch.optim.Adam(G.parameter(),lr=LR)

 

  先得有真实的数据,之前可以定义 def artist_work():

                ...

                return paintings

 

在训练过程中才定义损失函数

for step in range(10000):

  艺术作品 artist_paintings = artist_work()   # 调用这个函数,返回 return paintings

    生成的作品 G_paintings = G(G_ideas)      # 用随机灵感作为输入,输入到generator中,得到G_paingtings

  而 G_ideas 是怎么来的,用uniform随机生成的五个,,,因为用的是批次训练,所以写G_ideas = torch.randn( , G_ideas)

  训练过程中的损失函数,G和D肯定是分开的,,,G希望生成样本的值越大越好,D希望真实样本值越大越好,生成样本的值越小越小。

  G_loss

  D_loss

  

  每一次训练的时候都需要梯度清零,让优化器梯度清零

  opt_D.zero_grad()                   opt_G.zero_grad()

  D_loss.backward()                  G_loss.backward()

  opt_D.step()                            opt_G.step()

 

这样就可以训练了

 

  

 

分类:

技术点:

相关文章:

  • 2021-02-16
  • 2021-11-08
  • 2021-11-21
  • 2021-06-04
  • 2021-08-15
  • 2021-12-11
  • 2021-08-13
  • 2022-12-23
猜你喜欢
  • 2021-08-27
  • 2022-12-23
  • 2021-08-09
  • 2021-06-18
  • 2021-11-21
  • 2021-12-31
  • 2021-10-31
相关资源
相似解决方案