【发布时间】:2018-09-23 04:38:57
【问题描述】:
我建立了一个模型来对灰度图像进行着色,在训练阶段,我向网络提供了 100 张森林的 RGB 图像,然后我将图像转换为 LAB 颜色空间以将训练集拆分为 L 和 AB, 基于训练好的 AB 数据,模型将在测试阶段为灰度输入图像预测这两个通道。 现在我遇到了一个问题,我用不同的架构训练模型,而不是用 10 幅图像,损失降低到 0.0035 并且效果很好,为此,我想增加数据集的大小以获得更好的结果,但是作为交换,损失和准确率保持不变,模型输出一团糟, 我的代码如下,我希望任何人都可以指导我做错了什么,是因为优化器吗?损失函数?批量大小?或者其他我不知道的事情, 提前谢谢你。
# Import images
MODEL_NAME = 'forest'
X = []
Y = []
for filename in os.listdir('forest/'):
if (filename != '.DS_Store'):
image = img_to_array(load_img("/Users/moos/Desktop/Project-Master/forest/" + filename))
image = np.array(image, dtype=float)
imL = rgb2lab(1.0 / 255 * image)[:, :,0]
X.append(imL)
imAB = rgb2lab(1.0 / 255 * image)[:, :,1:]
imAB = imAB/128
Y.append(imAB)
X = np.array(X)
Y = np.array(Y)
X = X.reshape(1, 256 , np.size(X)/256, 1)
Y = Y.reshape(1, 256, np.size(Y)/256/2, 2)
# Building the neural network
model = Sequential()
model.add(InputLayer(input_shape=(256, np.size(X)/256, 1)))
model.add(Conv2D(8, (3, 3), activation='relu', padding='same', strides=2))
model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))
model.add(Conv2D(32, (3, 3), activation='relu', padding='same', strides=2))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same', strides=1))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same', strides=2))
model.add(Conv2D(128, (3, 3), activation='relu', padding='same', strides=1))
model.add(Conv2D(128, (3, 3), activation='relu', padding='same', strides=1))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same', strides=1))
model.add(Conv2D(32, (3, 3), activation='relu', padding='same', strides=1))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(8, (3, 3), activation='relu', padding='same'))
model.add(Conv2D(8, (3, 3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(2, (3, 3), activation='relu', padding='same'))
model.add(Conv2D(2, (3, 3), activation='tanh', padding='same'))
model.add(UpSampling2D((2, 2)))
# Finish model
model.compile(optimizer='rmsprop',loss='mse', metrics=['acc'])
#Train the neural network
model.fit(x=X, y=Y, batch_size=100, epochs=1000)
print(model.evaluate(X, Y, batch_size=100))
输出
Epoch 1/1000 1/1 [==============================] - 7s 7s/step - loss: 0.0214 - 累积:0.4987 纪元 2/1000 1/1 [===============================] - 7s 7s/step - loss: 0.0214 - acc : 0.4987 纪元 3/1000 1/1 [===============================] - 9s 9s/step - loss: 0.0214 - acc : 0.4987 纪元 4/1000 1/1 [===============================] - 8s 8s/step - loss: 0.0214 - acc : 0.4987 。 . . .
【问题讨论】:
标签: tensorflow deep-learning keras loss-function