
74
|
第
2
章
方法可以表示图像数据。像原始文本一样,图像不能直接输入模型中,需要转换为
模型可以理解的数值格式。我们将从讨论表示图像数据的一些常见方法开始:作为
像素值、作为瓦片集(
tiles
)和作为窗口序列集。多模态输入设计模式提供了一种在
我们的模型中使用多个图像表示的方法。
图像作为像素值。
图像的核心是像素值数组。例如,一个黑白图像的像素值范围为
0
到
255
。因此,我们可以将模型中
28
×
28
像素的黑白图像表示为
28
×
28
的数组,其
中整数取值范围为
0
到
255
。在本节中,我们将引用
MNIST
数据集,这是一个流行
的
ML
数据集,包括手写数字的图像。
通过
Sequential API
,我们可以使用一个
Flatten
(展平)层来表示像素值的
MNIST
图像,该层将图像展平为一维的
784
(
28
×
28
)元素数组:
layers.Flatten(input_shape=(28, 28))
对于彩色图像,这会变得更加复杂。
RGB
彩色图像中的每个像素都有三个值——分
别代表红色、绿色和蓝色。如果我们在上面例子中的图像是彩色的,我们会向模型
的
input_shape
添加第三个维度,这样它就会是:
layers.Flatten(input_shape=(28, 28, 3))
虽然将图像表示为像素值数组对于简单图像(如
MNIST
数据集中的灰度图像)来说
效果很好,但当我们在整个过程中引入具有更多边缘和形状的图像时,它就开始失
效了。当一个网络一次接收一个图像中的所有像素时,它很难专注于包含重要信息
的相邻像素的较小区域。 ...