1. 程式人生 > >tensorflow tips:features,batch_size,iteration,epoch, global_step, shard

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數的倍數