точность оценки тензорного потока и потери равны нулю - PullRequest
0 голосов
/ 08 ноября 2018

Точность и потеря моей модели оцениваются в 0.
Глобальные шаги должны быть 1625, но это 1.
Прибыль и убыток не должны быть равны 0, поскольку они оба противоречат друг другу.

Моя функция ввода, оценка keras, train_and_evaluate:

def make_input_fn(addrs,labels,batch_size,mode):

 filename_dataset = tf.data.Dataset.from_tensor_slices((addrs,labels))     

 dataset = filename_dataset.apply(tf.contrib.data.map_and_batch(lambda 
 addrs, labels: tuple(tf.py_func(
    process, [addrs, labels], [tf.uint8, labels.dtype])),batch_size,

 num_parallel_batches=2,

 drop_remainder=False))
 if mode == tf.estimator.ModeKeys.TRAIN:
  num_epochs = None # indefinitely
  dataset = dataset.apply(tf.contrib.data.shuffle_and_repeat(buffer_size = 10000))
 else:
  num_epochs = 1
  dataset = dataset.repeat(num_epochs)

 dataset = dataset.prefetch(buffer_size=batch_size)
 images,labels = dataset.make_one_shot_iterator().get_next()
 images.set_shape([None,512,512,3])
 labels.set_shape([None,1])
 return images,labels

def keras_estimator(model_dir,config):
 base_model = Xception(weights='imagenet', include_top=False,input_shape = 
  (512,512,3),classes = 5)
 x = base_model.output
 x = GlobalAveragePooling2D()(x)

 x = Dense(1024, activation='relu')(x)
 x = Dropout(0.2)(x)
 x = Dense(256, activation='relu')(x)
 x = Dropout(0.2)(x)

 predictions = Dense(5, activation='softmax')(x)


 model = Model(inputs=base_model.input, outputs=predictions)


 for layer in base_model.layers:
   layer.trainable = False
 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', 
       metrics=['acc'])


 estimator=tf.keras.estimator.model_to_estimator(keras_model=model,
      model_dir=model_dir,
      config=config)
 return estimator

def train_and_evaluate(model_dir):
 t_batch_size = 512
 e_batch_size = 64
 num_epochs = 25
 import pandas as pd
 df = pd.read_csv('/content/trainLabels.csv')
 from random import shuffle
 addrs = ['/content/train/train/' + str(df.iloc[i]['image']) + '.jpeg' for i 
 in range(len(df))]
 labels = df['level'].values.tolist()
 c = list(zip(addrs, labels))
 shuffle(c)
 addrs1, labels1 = zip(*c)
 train_addrs = addrs1[0 : int(0.9 * len(addrs))]
 train_labels = labels1[0 : int(0.9 * len(labels))]
 val_addrs = addrs1[ int(0.9 * len(addrs)) : ]
 val_labels = labels1[ int(0.9 * len(addrs)) : ]
 train_addrs = list(train_addrs)
 train_labels = list(train_labels)
 val_addrs = list(val_addrs)
 val_labels = list(val_labels)

 run_config = tf.estimator.RunConfig(save_checkpoints_secs=300)

 estimator = keras_estimator(model_dir,run_config)

 t_max_steps = (len(train_addrs) // t_batch_size) * num_epochs

 train_spec = tf.estimator.TrainSpec(input_fn = lambda : 
 make_input_fn(train_addrs,train_labels,
 t_batch_size,mode=tf.estimator.ModeKeys.TRAIN),max_steps = t_max_steps)

 eval_spec = tf.estimator.EvalSpec(input_fn = lambda : 
 make_input_fn(val_addrs,val_labels,
 e_batch_size,mode=tf.estimator.ModeKeys.EVAL),steps = 
 None,start_delay_secs=10,
    throttle_secs=300)


 tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)

Вот файлы журнала:

ИНФОРМАЦИЯ: tenorflow: проведение обучения и оценки на местном уровне (Нераспределенной). ИНФОРМАЦИЯ: tenorflow: начать тренировку и оценить цикл. Оценка будет происходить после каждой контрольной точки. Частота контрольной точки определяется на основе аргументов RunConfig: save_checkpoints_steps Нет или save_checkpoints_secs 300. ПРЕДУПРЕЖДЕНИЕ: tenorflow: From : 9: map_and_batch (из tenorflow.contrib.data.python.ops.batching) устарела и будет удалено в будущей версии. Инструкция по обновлению: Использование tf.data.experimental.map_and_batch (...). ПРЕДУПРЕЖДЕНИЕ: tensorflow: От : 12: shuffle_and_repeat (из tenorflow.contrib.data.python.ops.shuffle_ops) устарела и будет быть удаленным в будущей версии. Инструкция по обновлению: Использование tf.data.experimental.shuffle_and_repeat (...). INFO: tensorflow: Вызов model_fn. ИНФОРМАЦИЯ: tenorflow: Закончен вызов model_fn. ИНФОРМАЦИЯ: тензор потока: теплый запуск с WarmStartSettings: WarmStartSettings (ckpt_to_initialize_from = '/ содержание / обучение / keras / keras_model.ckpt', vars_to_warm_start = '. *', var_name_to_vocab_info = {}, var_name_to_prev_var_name = {}) ИНФОРМАЦИЯ: тензорный поток: горячий старт с: ( '/Content/training/keras/keras_model.ckpt',) ИНФОРМАЦИЯ: тензор потока: переменная с горячим запуском: плотная / ядро; prev_var_name: Без изменений ИНФОРМАЦИЯ: тензор потока: переменная начала нагрева: плотная / смещение; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: dense_1 / ядро; prev_var_name: без изменений INFO: тензор потока: теплый запуск переменная: плотность_1 / смещение; prev_var_name: без изменений ИНФОРМАЦИЯ: tenorflow: переменная с горячим запуском: dens_2 / kernel; prev_var_name: Без изменений ИНФО: тензор потока: переменная с горячим запуском: плотность_2 / смещение; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: Адам / итерации; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная теплого запуска: Адам / лр; prev_var_name: Без изменений INFO: tenorflow: переменная с горячим стартом: Adam / beta_1; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: Адам / бета_2; prev_var_name: без изменений INFO: тензор потока: теплый запуск переменная: Адам / Распад; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная с горячим началом: тренировка / Адам / переменная; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_1; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная с горячим стартом: тренировка / Адам / Переменная_2; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_3; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная с горячим стартом: тренировка / Адам / Переменная_4; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_5; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная с горячим стартом: тренировка / Адам / Переменная_6; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_7; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная с горячим стартом: тренировка / Адам / Переменная_8; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_9; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная с горячим стартом: тренировка / Адам / Переменная_10; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_11; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная с горячим стартом: тренировка / Адам / Переменная_12; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_13; prev_var_name: без изменений ИНФОРМАЦИЯ: тензор потока: переменная старта: тренировка / Адам / Переменная_14; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_15; prev_var_name: без измененийИНФОРМАЦИЯ: тензор потока: переменная старта: тренировка / Адам / Переменная_16; prev_var_name: без изменений INFO: tenorflow: переменная с горячим стартом: обучение / Adam / Variable_17; prev_var_name: без изменений ИНФОРМАЦИЯ: tenorflow: создать CheckpointSaverHook. ИНФОРМАЦИЯ: tenorflow: график был завершена. ИНФОРМАЦИЯ: tenorflow: выполняется local_init_op. INFO: tensorflow: Готово работает local_init_op. ИНФОРМАЦИЯ: tenorflow: сохранение контрольных точек для 0 в /content/training/model.ckpt. ИНФОРМАЦИЯ: tenorflow: сохранение контрольных точек для 1 в /content/training/model.ckpt. ИНФОРМАЦИЯ: tenorflow: вызов model_fn. ИНФОРМАЦИЯ: tenorflow: Закончен вызов model_fn. INFO: tensorflow: Начало оценка в 2018-11-05-13: 21: 17 ИНФОРМАЦИЯ: тензор потока: график был завершен. ИНФОРМАЦИЯ: tenorflow: восстановление параметров из /content/training/model.ckpt-1 INFO: tenorflow: выполняется local_init_op. ИНФОРМАЦИЯ: tenorsflow: Закончено выполнение local_init_op. INFO: tensorflow: Закончено оценка в 2018-11-05-13: 22: 08 ИНФОРМАЦИЯ: тензор потока: экономия на глобальный шаг 1: acc = 0.0, global_step = 1, убыток = 0.0 ИНФОРМАЦИЯ: tenorflow: сохранение сводки 'checkpoint_path' для глобального шага 1: /content/training/model.ckpt-1 ИНФОРМАЦИЯ: tenorflow: потеря для последнего шага: Ни один.

1 Ответ

0 голосов
/ 10 июля 2019

У меня была эта проблема раньше. Это потому, что я указал неправильный каталог для наборов данных. В конечном итоге тензор потока не имел входных данных. Надеюсь, это поможет.

...