tensorflow tips:features,batch_size,iteration,epoch, global_step, shard

example相当于一个单位的训练数据,例如一张图片,example包含features,features包含多个feature,feature即一个格式为Int64List或BytesList等格式的数据,例如一张图片包含的feature有:height, width,channels,filename,format等等。


如果batch_size==1,相当于学完一张图片就更新参数, 这样会导致特征不明显,参数振荡,两次的学习结果可能会互相抵消;如果batch_size=images_num(一个epoch), 相当于遍历完所有图片进行权值更新,这样训练的速度太慢。所以可以综合一下,取一个合适值。关于batch_size的取值问题参考:点击打开链接


epoch是整个训练数据集,当数据集不大时,直接batch_size=image_num,数据集大时可能资源不够,将epoch分成多个batches。


iteration是完成一次epoch所需的batch个数,也是batch_num。


global_step在训练中是计数的作用,每训练一个batch就加1,一般会设置一个max_number_of_steps,到达后训练结束。如在cifar10_train.py中,训练100K steps,训练了256个epoches。


读取数据例如图片集时,会创建多个线程来增加速度,读取图片后将数据存进tfrecord文件,为了加速读取,可设置多个存入数据的文件即rfrecord文件,这个tfrecord文件数就是shard的值,每一个线程均分设置的shard数量,所以shard数应当是thread数的倍数

猜你喜欢

转载自blog.csdn.net/ygfrancois/article/details/80431238