如何将矩阵转换为keras兼容图像?

时间:2017-09-01 17:54:50

标签: python python-3.x keras

我想要做的是转换像这个矩阵(python中的2D列表)

之类的东西

0 0 0

1 1 1

0 0 0

到这样的图像

黑色黑色黑色

白色白色白色

黑色黑色黑色

哪个与keras的卷积层兼容?

P.S。

我不了解"图像"的实际数据结构。由keras使用,因此我陷入了困境。如果可能的话,如果有人能告诉我图像的数据结构是什么样的话会很好。我目前的猜测是宽度,高度和RGB值的三维数组,或单色图像的二维数组。但是,我不确定它是否是0到1或0到255之间的值。我还怀疑该值必须是" float32"但我不确定如何处理这些事实。

1 个答案:

答案 0 :(得分:0)

Keras是数字,因此,01非常适合完成任务,除了观察所需的input_shape之外,您不必做任何其他事情。第一层。

如果您使用0到255也不是一个大问题,但标准是使用0到1.您的输出与最后一次激活相匹配非常重要&#39 ;你用。 (例如:' sigmoid'激活将提供0到1之间的输出)。

卷积图层输入形状:

要将数据作为卷积图层的输入,您必须按如下方式对数据进行整形:

(NumberOfImages, Width, Heigth, channels) #W and H may be inverted, but it doesn't matter much as long as they will not be swapped along the model.    

频道代表红色,绿色,蓝色通道的图像。一些图像可能有4个通道。黑白图像有一个通道。

构建图像的数据类型是什么?

很大程度上取决于您使用哪个库加载图片。 如果您有numpy数组,只需使用0到1之前的数字。

当使用pillow(一个图像库)时,它会返回0到255之间的东西,你所要做的就是从它创建一个numpy数组并将其除以255.

from PIL import Image
import numpy as np

im = Image.open(filename)
im = im.resize(size,Image.LANCZOS) #if your images are not already the size you want    
im = np.asarray(im)/255