我正在测试tensorflow中keras的图像机器学习。
输入图像和答案图像相同。训练完模型后,我想对其进行测试,因此我使用PIL库中的“ Image.fromarray”放置了一些图像并转换为图像(因为模型输出是numpy数组而不是图像)。
但是图像有点奇怪,所以我打印了预测图像的数组。和数组由0到1之间的数字组成(例如0.000025)。据我所知,图像数组由0到255之间的数字组成。
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(128, 128, 3)),
tf.keras.layers.Dense(64, activation=tf.nn.relu),
#tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(49152, activation=tf.nn.softmax),
tf.keras.layers.Reshape((128, 128, 3))
])
model.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['accuracy'])
这是我的模型代码
prediction = (prediction.squeeze()*255)
我写了这段代码,因为我必须将其(4d数组)转换为3d数组才能使用“ Image.fromarray”
哦,我知道我必须添加np.uint8才能将“预测”转换为整数,但是在我的代码中,“预测的输出介于0和1之间,所以如果我写了np.uint8,所有数组都将更改为0。
所以问题是预测的数组有问题。我不知道为什么。 请帮我。谢谢您的时间。