我正在嘗試準備從零開始培訓ImageNet模型的日期,我對培訓的工作原理有點困惑。Tensorflow Slim Imagenet培訓
在準備TF記錄時,我在Inception模型數據目錄中注意到這個文件:「imagenet_metadata.txt」。該文件包含21842類的標籤,但培訓腳本和「imagenet_lsvrc_2015_synsets.txt」文件僅適用於1000個類。
我想知道我需要做什麼修改來訓練21K類的模型而不是1K的?
我正在嘗試準備從零開始培訓ImageNet模型的日期,我對培訓的工作原理有點困惑。Tensorflow Slim Imagenet培訓
在準備TF記錄時,我在Inception模型數據目錄中注意到這個文件:「imagenet_metadata.txt」。該文件包含21842類的標籤,但培訓腳本和「imagenet_lsvrc_2015_synsets.txt」文件僅適用於1000個類。
我想知道我需要做什麼修改來訓練21K類的模型而不是1K的?
這是很簡單的用slim.To列車imgnet 21K採用纖薄的,我建議做以下步驟:
1.In tf_models /超薄/數據集文件夾創建imagenet.py文件(例如imgnet的副本。 PY)。在新的文件更改所需的 變量到你所需的值:
_FILE_PATTERN = ####your tfrecord_file_pattern. for me('imgnet_%s_*.tfrecord')
_SPLITS_TO_SIZES = {
'train': ####Training Samples,
'validation': ####Validation Samples,}
_NUM_CLASSES = 21841
* WordNet的同義詞集包含21482項,但在21481(n04399382遺漏)的imagenet21k類的總數。所以可以肯定的關於可用類的總數。
*您還需要對代碼進行一些修改,以便從本地地址加載synset文件。
base_url = '/home/snf/libraries/tf_models/slim'
synset_url = '{}/listOfTags.txt'.format(base_url)
synset_to_human_url = '{}/imagenet21k_metadata.txt'.format(base_url)
添加新的數據集tf_models /超薄/數據集datasetfactory.py:
from datasets import imgnet
datasets_map = {
'cifar10': cifar10,
'flowers': flowers,
'imagenet': imagenet,
'mnist': mnist,
'imgnet': imgnet, #add this line to dataset_map
}
在tf_models /超薄/創建一個包含這些行Train_Imgnet.sh文件:
TRAIN_DIR=trained/imgnet-inception-v4
DATASET_DIR=/media/where/tfrecords/saved/tfRecords-fall11_21k
CUDA_VISIBLE_DEVICES="0,1,2,3" python train_image_classifier.py
--train_dir=${TRAIN_DIR} \
--dataset_name=imgnet \
--dataset_split_name=train \
--dataset_dir=${DATASET_DIR} \
--model_name=inception_v4 \
--max_number_of_steps=10000000 \
--batch_size=32 \
--learning_rate=0.01 \
--learning_rate_decay_type=fixed \
--save_interval_secs=60 \
--save_summaries_secs=60 \
--log_every_n_steps=100 \
--optimizer=rmsprop \
--weight_decay=0.00004\
--num_readers=12 \
--num_clones=4
將文件設置爲可執行文件(Chmod + x Train_Imgnet.sh)並運行它(./Train_Imgn et.sh)