模型拟合期望1个数组,但我得到768个

时间:2019-02-06 13:19:12

标签: python-3.x tensorflow neural-network

我是TF的新手,但遇到了一些问题。我正在尝试将形状(150 x 150 x 3)的彩色图像分为30个类别。 当我拟合模型时,出现错误:

ValueError:检查模型输入时出错:传递给模型的Numpy数组列表不是模型预期的大小。预计将看到1个阵列,但获得了768个阵列的以下列表:...

我的代码:

model = Sequential() 

model.add(Flatten(input_shape=(150,150,3)))

model.add(Dense(150, activation=tf.nn.relu)) 

model.add(Dense(150, activation=tf.nn.relu))

model.add(Dense(30, activation=tf.nn.softmax))

model.compile(optimizer='adam' ,loss='sparse_categorical_crossentropy' ,metrics=['accuracy'])

model.fit(x_train, y_train, epochs=15, batch_size=768)

输入数组不是numpy数组,当我尝试对其进行转换时,numpy给出了一个错误,即无法将(150,150,3)广播为形状(150,150)

此外,输入数组(x_train)是尺寸为(150 x 150 x 3)的np个数组的数组,所以所有x_train的形状均为(768 x 150 x 150 x 3) 768个观察结果(至少希望如此) y_train只是一个由标签组成的简单数组。

到目前为止,输入数据都是以下列方式导入的.jpg图像:

with Image.open(filename) as img:
images.append(np.array(img.resize((150,150))))

x_train, x_test, y_train, y_test = train_test_split(images, classes, test_size=0.2, random_state=42)

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

看起来x_train是一个包含768个成员的列表,每个成员都是一个形状为(150,150,3)的np数组。但是,x_train应该是一个np形状的数组(768、150、150、3),以便将其馈入拟合函数。您可以将x_train转换为数组:

x_train = np.array(x_train)