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

来源:6-9 编写训练神经网络的方法(下)

慕丝4144012

2018-02-28

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

写回答

1回答

Oscar

2018-02-28

好问题。其实你看 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(标签)。

//img.mukewang.com/szimg/5a96b0aa0001425d11530681.jpg


//img.mukewang.com/szimg/5a96b0ca0001ad9611520581.jpg

0
1
慕丝4144012
谢谢老师的讲解。我还想问就是在train_on_batch中的label,您在程序中定义的是[1] * BATCH_SIZE + [0] *BATCH_SIZE, 1是代表是真正确的数据,0是代表不是正确的。 然后输入的训练样本数据您是将原来真实的样本数据和噪声数据链接了起来,一共是两个BATCH_SIZE的长度,那您这个标签定义的意思就是前面的一半是真实数据表示1,后面的一半都是噪声,都是0,然后输入给模型训练,用这个标签来计算loss的,是吗?
2018-02-28
共1条回复

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程