У меня было очень странное время с TensorFlow в последние дни, и я не могу думать о том, что происходит не так.Сеть TensorFlow не тренируется?
Я построил эту сеть: link. Это копия примера MNIST от TensorFlow.
В основном, что я сделал, меняет сеть на получение изображений 28x28x1 (оттенки серого MNIST) до 600x800x1 изображений (некоторые изображения я взял самостоятельно, веб-камера с относительно чистым фоном и одним объектом в разных местах).
Что я хотел сделать, так это играть с таким CNN и вывести его на x-местоположение объекта на изображении. Итак, один единственный нейронный выход.
Однако, независимо от того, что я пробовал, сеть всегда выводит 1.0. Даже (когда вы смотрите мой раздел тестирования в конце кода), когда я кормлю все, все нули или все случайные числа в сети.
Конечно, поскольку у меня есть только 21 маркированный тренинг и 7 помеченных тестовых изображений, я ожидал, что производительность будет очень плохой (так как изображения 800x600 пикселей огромны для нейронных сетей и поиск объекта непросто).
... но я понятия не имею, почему сеть всегда выводит 1.0, даже если ее кормят ерундой. Есть идеи?
Хорошо, я изменил y_train, а выходной слой будет 800-мерным и однострочным. Поэтому, если реальная координата x была, например, 300, чем y_train [300] = 1,0, а все остальные значения - 0,0. К сожалению, сеть отказывается тренироваться: непосредственно в первую эпоху она падает с * Tensor имеет значения NaN *. Есть идеи? – daniel451
Почти наверняка эта строка: 'cross_entropy = -tf.reduce_sum (y_train * tf.log (y_conv))' вычисляет log (0), что является NaN. Вместо использования 'tf.nn.softmax()' и вручную вычисляя кросс-энтропию, попробуйте использовать ['tf.nn.softmax_cross_entropy_with_logits()'] (https://www.tensorflow.org/versions/master/api_docs/ python/nn.html # softmax_cross_entropy_with_logits), который более устойчив к этим проблемам. – mrry
Да, наверное, это была ошибка. Это тренировка сейчас с разными темпами тренировки для оптимизатора :) – daniel451