Форма несоответствия логотипов и этикеток - PullRequest
0 голосов
/ 28 мая 2018

Ошибка:

Traceback (most recent call last):
  File "C:/Users/xx/abc/Final.py", line 167, in <module>
    tf.app.run()
  File "C:\Users\xx\tensorflow\python\platform\app.py", line 126, in run
    _sys.exit(main(argv))
  File "C:/Users/xx/abc/Final.py", line 148, in main
    hooks=[logging_hook])
  File "C:\Users\xx\tensorflow\python\estimator\estimator.py", line 363, in train
    loss = self._train_model(input_fn, hooks, saving_listeners)
  File "C:\Users\xx\tensorflow\python\estimator\estimator.py", line 843, in _train_model
    return self._train_model_default(input_fn, hooks, saving_listeners)
  File "C:\Users\xx\tensorflow\python\estimator\estimator.py", line 856, in _train_model_default
    features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)
  File "C:\Users\xx\tensorflow\python\estimator\estimator.py", line 831, in _call_model_fn
    model_fn_results = self._model_fn(features=features, **kwargs)
  File "C:/Users/xx/abc/Final.py", line 61, in cnn_model_fn
    loss = tf.losses.sparse_softmax_cross_entropy(labels=labels, logits=logits)
  File "C:\Users\xx\tensorflow\python\ops\losses\losses_impl.py", line 853, in sparse_softmax_cross_entropy
    name="xentropy")
  File "C:\Users\xx\tensorflow\python\ops\nn_ops.py", line 2046, in sparse_softmax_cross_entropy_with_logits
    logits.get_shape()))


ValueError: Shape mismatch: The shape of labels (received (100,)) should equal the shape of logits except for the last dimension (received (300, 10)).

Функция ввода поезда:

train_input_fn = tf.estimator.inputs.numpy_input_fn(
      x={"x": train_data},
      y=train_labels,
      batch_size=100,
      num_epochs=None,
      shuffle=True)

ВСЕ ФОРМЫ ДАННЫХ

  print(train_data.shape)
  //Output: (9490, 2352) 

  train_labels = np.asarray(label_MAX[0], dtype=np.int32)


  print(train_labels.shape)
  //Output: (9490,)
  eval_data = datasets[1]  # Returns np.array


  print(eval_data.shape)
  //Output: (3175, 2352)
  eval_labels = np.asarray(label_MAX[1], dtype=np.int32)


  print(eval_labels.shape)
  //Output: (3175,)

Я читаю другие вопросы StackOverflowи большинство из них указали на вычисление функции потерь как на точку ошибки.Тот факт, что код отправляет партию из 100 меток, вызывает проблему?

Как я могу решить эту проблему?Является ли причиной этой проблемы тот факт, что число изображений и меток не кратно 100?

Моя модель обучается только для 0 и 1, поэтому я полагаю, что я должен изменить это значение

logits = tf.layers.dense(inputs=dropout, units=10)

и изменить количество единиц на 2?

1 Ответ

0 голосов
/ 28 мая 2018

Проблема возникает из-за того, что вы используете изображения RGB.Модель предназначена для использования с изображениями в градациях серого, как показано в строке input_layer = tf.reshape(features["x"], [-1, 28, 28, 1]) в верхней части определения CNN.Наличие 3 каналов вместо 1 означает, что размер пакета здесь будет в три раза больше.

Чтобы исправить это, измените эту строку на input_layer = tf.reshape(features["x"], [-1, 28, 28, 3]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...