我正在为图像转换编写CNN(通常使用傅立叶转换和参数集完成)
我在从第一个时期返回NAN的损失函数时遇到了麻烦,我尝试过更改优化器,调整学习率,添加辍学和批量归一化,更改模型的设计,但似乎没有任何效果。
我还确保我的数据本身不包含inf。我的数据集确实包含大量的零,所以不确定是否会影响它。我已将数据标准化为[0,1]
即使我将其简化为仅具有这一层,也会立即造成损失(#个通道= 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)
任何帮助或见识将不胜感激,也许我只是缺少一个非常明显的步骤!
答案 0 :(得分:0)
我认为您的问题来自于您定义模型的方式:
为我们提供更多有关您要预测的精确度的信息,如果您需要更多有关使用哪种激活/损失的帮助!