Я пишу CNN для преобразования изображения (обычно выполняется с помощью преобразования Фурье и набора параметров)
У меня проблемы с функцией потери, возвращающей NAN с первой эпохи, я пытался изменить мои оптимизаторы, регулировка скорости обучения, добавление отсева и нормализация партии, изменение дизайна моей модели, но, похоже, ничего не работает.
Я также гарантирую, что в моих данных нет нана инфы. Мой набор данных содержит большое количество нулей, поэтому я не уверен, влияет ли это на него. Я нормализовал данные так, чтобы они находились в диапазоне [0,1]
, даже если я упростил его, чтобы иметь только этот слой, потери сразу равны (# channel = 1, размер изображения 1024x1024):
model.add(Conv2D(1, 1 , activation = 'relu', input_shape = (1,1024, 1024),
kernel_regularizer=regularizers.l2(0.01),
bias_regularizer=regularizers.l2(0.01)))
opt = Adagrad(learning_rate = 0.0001, clipvalue = .5)
model.compile(optimizer = opt, loss = 'mean_squared_error',
metrics= ['acc', 'mse'])
history = model.fit_generator(generator=training_generator,
steps_per_epoch = 30, verbose = 2,
epochs = 20)
Я использую свой собственный генератор для подачи пакетов данных изображения в модель. В настоящее время я использую размер пакета только 2.
В настоящее время вывод просто:
Epoch 1/20
- 62s - loss: nan - acc: 0.2009 - mse: nan
Epoch 2/20
- 61s - loss: nan - acc: 0.2007 - mse: nan
Epoch 3/20
- 62s - loss: 9.5592 - acc: 0.1675 - mse: 0.2778
Epoch 4/20
- 61s - loss: nan - acc: 0.2340 - mse: nan
Epoch 5/20
- 61s - loss: nan - acc: 0.1172 - mse: nan
Epoch 6/20
- 61s - loss: nan - acc: 0.1173 - mse: nan
и т. Д.
Проблема, которую я пытаюсь смоделировать Я преобразовываю изображение в голограмму с использованием преобразования Фурье и фазового сдвига, выходное изображение должно иметь те же размеры, что и входное (1, 1024, 1024)
Любая помощь или понимание будет высоко ценится, может быть, я просто пропустить очень очевидный шаг!