Tensorflow:模型训练tensorflow.train
Posted -柚子皮-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow:模型训练tensorflow.train相关的知识,希望对你有一定的参考价值。
深度学习训练中的几个概念
(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;一次Forword运算以及BP运算中所需要的训练样本数目,其实深度学习每一次参数的更新所需要损失函数并不是由一个data:label获得的,而是由一组数据加权得到的,这一组数据的数量就是[batch size]。当然batch size 越大,所需的内存就越大,要量力而行。
(2)step/iteration:1个iteration等于使用batchsize个样本训练一次;每一次迭代都是一次权重更新,每一次权重更新需要batch size个数据进行Forward运算得到损失函数,再BP算法更新参数。tf.train.get_or_create_global_step()记录的应该就是这个。
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;一般在训练时会重复数据多次:dataset = dataset.shuffle(params['buffer']).repeat(params['epochs'])。
训练完整个样本集需要:数据量*epochs/batch_size个iteration/step,当然如果有early stopping则可能小于这个值。模型训练完后,再运行再训练,则会接着上次的ckpt训练,但是如果有early stopping,且达到指标,超过后会提示tensorflow No increase in metric "f1" for steps ***, which is greater than or equal to max steps ***,此时并不会接着训练。
举个例子
训练集有1000个样本,batchsize=10,epoch=1,那么训练完整个样本集需要1000*1/10=100次iteration/step。
loss = 5.8677516, step = 953 (12.937 sec) 表示step = 953时的loss
Saving 'checkpoint_path' summary for global step 953: results/model/model.ckpt-953 表示在step = 953时,保存一次ckpt.
MonitoredTrainingSession
bugs:
1 图构建完直接完成,无报错:可能是run函数都写在with MonitoredTrainingSession外面了。
from: -柚子皮-
ref: [tf.train]
以上是关于Tensorflow:模型训练tensorflow.train的主要内容,如果未能解决你的问题,请参考以下文章