Тренировка Tensorflow CNN останавливается без причины - PullRequest
0 голосов
/ 04 марта 2019

У меня есть этот код Python для обучения CNN с использованием Tensorflow.Он работал отлично, пока я не решил использовать MirroredStrategy для улучшения производительности.Затем необходимо было внести некоторые изменения:

  1. Мне пришлось прекратить использовать tf.estimator.inputs.numpy_input_fn(), поскольку для MirroredStrategy требуется функция ввода, которая возвращает набор данных.
  2. Я в основном скопировал train_input_fn из наборов данных для оценщиков для использования в качестве моей функции ввода

Теперь, кажется, работает без проблем, но ничего не тренирует и через несколько секунд перестает работатьбез каких-либо ошибок.

Немного более подробной информации:

  1. Я отслеживаю использование своего ЦП и ГП во время обучения, и когда я запускаю код, частота ГП повышается до тех пор, пока программа не остановится.
  2. Я уже пытался изменить размер пакета, но без изменений.
  3. Мой графический процессор - GTX 1070, драйвер также был обновлен, и я использую tensorflow-gpu версию 1.12.0в моей среде

Вывод ядра:

In [1]: runfile('D:/MS/CNN.py', wdir='D:/MS')
INFO:tensorflow:Initializing RunConfig with distribution strategies.
INFO:tensorflow:Not using Distribute Coordinator.
INFO:tensorflow:Using config: {'_model_dir': 'models3', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: true
graph_options {
  rewrite_options {
    meta_optimizer_iterations: ONE
  }
}
, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': <tensorflow.contrib.distribute.python.mirrored_strategy.MirroredStrategy object at 0x0000026729AC1320>, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x0000026729AC14A8>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1, '_distribute_coordinator_mode': None}
INFO:tensorflow:Device is available but not used by distribute strategy: /device:CPU:0
INFO:tensorflow:Configured nccl all-reduce.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:batch_all_reduce invoked for batches size = 16 with algorithm = nccl, num_packs = 1, agg_small_grads_max_bytes = 0 and agg_small_grads_max_group = 10

In [1]:

Код тренировки:

def train_input_fn(features, labels, batch_size):
    # Convert the inputs to a Dataset.
    dataset = tf.data.Dataset.from_tensor_slices((features, labels))
    # Shuffle, repeat, and batch the examples.
    dataset = dataset.shuffle(1000).repeat(count=100).batch(batch_size)
    # Return the dataset.
    return dataset

gpu_distribution = tf.contrib.distribute.MirroredStrategy()
run_config = tf.estimator.RunConfig(train_distribute=gpu_distribution)
classifier = tf.estimator.Estimator(model_fn= cria_rede, config=run_config, model_dir='models3')
classifier.train(input_fn=lambda: train_input_fn(x_data, y_data, 2), steps= 3000)
#x_data and y_data are bidimensional numpy.ndarrays
...