2017-03-03 4 views
0

私はEstimatorを使用して、ループ内のモデルを使用してデータをフィードします。すべてのステップが最終ステップです。チェックポイントは最終ステップごとに保存されます。私は、トレーニングのパフォーマンス(スピード)を上げるために、すべての繰り返しでチェックポイントを保存しないようにしたいと考えています。 これを行う方法に関する情報は見つかりません。アイデア/提案/解決策はありますか?エスティメータの最終ステップのチェックポイントを保存しません

classifier = Estimator(
    model_fn=cnn_model_fn, 
    model_dir="./temp_model_Adam", 
    config=tf.contrib.learn.RunConfig(
     save_checkpoints_secs=None, 
     save_checkpoints_steps=100, 
     save_summary_steps=None 
    ) 
) 



# Train the model 

for e in range(0, 10): 
    numbers = np.arange(10000) 
    np.random.shuffle(numbers) 
    for step in range(0, 2000): 
     classifier.fit(
      input_fn=lambda: read_images_for_training_as_batch(step, path, 5, numbers), 
      steps=1 
     ) 

答えて

0

昨今APIは少しも変わってしまったが、私はあなたがフィットを使用していた見たものから(現在は訓練)メソッドが誤って、あなたはステップ= 2000を入れて、あなたの入力機能は、データセットの反復子を返す必要があります。今日、小さなデータセットがあるときに役立つtf.estimator.inputs.numpy_input_fnが用意されています。それ以外の場合は、tf.data.DataSet APIを使用する必要があります。

このような何か(それは.wavファイルをロードします):

from tensorflow.contrib.framework.python.ops import audio_ops as contrib_audio 
from tensorflow.python.ops import io_ops 
# ... 
def input_fn(num_epochs, batch_size, shuffle=False, mode='training') 

    def input_fn_bound(): 
     def _read_file(fn, label): 
      return io_ops.read_file(fn), label 

     def _decode(data, label): 
      pcm = contrib_audio.decode_wav(data, 
              desired_channels=1, 
              desired_samples=desired_samples) 
      return pcm.audio, label 

     filenames = get_files(mode) 
     classes = get_classes(mode) 
     labels = {'class': np.array(classes)} 
     dataset = tf.data.Dataset.from_tensor_slices((filenames, labels)) 

     if shuffle: 
      dataset = dataset.shuffle(buffer_size=len(labels)) 
     dataset = dataset.map(_read_file, num_parallel_calls=num_map_threads) 
     dataset = dataset.map(_decode, num_parallel_calls=num_map_threads) 
     dataset = dataset.map(lambda wav, label: ({'wav': wav}, label)) 

     dataset = dataset.repeat(num_epochs) 
     dataset = dataset.batch(batch_size) 
     dataset = dataset.prefetch(2)  # To load next batch while the first one is being processed on GPU 
     iter = dataset.make_one_shot_iterator() 
     features, labels = iter.get_next() 
     return features, labels 

    return input_fn_bound 

# .... 

estimator.train(input_fn=input_fn(
     num_epoths=None, 
     batch_size=64, 
     shuffle=True, 
     mode='training'), 
    steps=10000) 
関連する問題