请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

output_batch是输入给训练函数的label吗,它与model.fit函数中的label表示含义是一样的吗,为什么程序中要那么定义

 output_batch = [1] * BATCH_SIZE + [0] * BATCH_SIZE
            #训练判别器, 让它具备识别不合格生成图片的能力
            d_loss = d.train_on_batch(input_batch, output_batch)

正在回答

1回答

Oscar 2018-02-28 21:40:33

好问题。其实你看 Keras 的 Sequential 的 文档 会发现:

fit 方法和 train_on_batch 方法有点类似,都可以用来训练模型。

它们的主要区别是:

fit 是一个可以方便地做多个 Epoch(纪元:所有的训练样本完成一次迭代
)训练的方法。而每个批次的样本则是用 train_on_batch 方法来训练的(train_on_batch 的名字也透露了它做的事:在一个 batch 上训练)


一些概念:

# Batch size : 批次(样本)数目。一次迭代(Forword 运算(用于得到损失函数)以及 BackPropagation 运算(用于更新神经网络参数))所用的样本数目。Batch size 越大,所需的内存就越大
# Iteration : 迭代。每一次迭代更新一次权重(网络参数),每一次权重更新需要 Batch size 个数据进行 Forward 运算,再进行 BP 运算
# Epoch : 纪元/时代。所有的训练样本完成一次迭代
# 假如: 训练集有 1000 个样本,Batch_size=10
# 那么: 训练完整个样本集需要: 100 次 Iteration,1 个 Epoch


可以看到,代码里 output_batch 的大小是 BATCH_SIZE,也就是我们定义的一个批次(样本)数目。

output_batch (也就是 train_on_batch 方法里的 y)和 model.fit 方法 中的 y 都是表示 label(标签)。

https://img1.sycdn.imooc.com//szimg/5a96b0aa0001425d11530681.jpg


https://img1.sycdn.imooc.com//szimg/5a96b0ca0001ad9611520581.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 慕丝4144012 #1
    谢谢老师的讲解。我还想问就是在train_on_batch中的label,您在程序中定义的是[1] * BATCH_SIZE + [0] *BATCH_SIZE, 1是代表是真正确的数据,0是代表不是正确的。
    然后输入的训练样本数据您是将原来真实的样本数据和噪声数据链接了起来,一共是两个BATCH_SIZE的长度,那您这个标签定义的意思就是前面的一半是真实数据表示1,后面的一半都是噪声,都是0,然后输入给模型训练,用这个标签来计算loss的,是吗?
    回复 有任何疑惑可以回复我~ 2018-02-28 21:57:07
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信