我是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)
谢谢您的帮助!
答案 0 :(得分:0)
看起来x_train是一个包含768个成员的列表,每个成员都是一个形状为(150,150,3)的np数组。但是,x_train应该是一个np形状的数组(768、150、150、3),以便将其馈入拟合函数。您可以将x_train转换为数组:
x_train = np.array(x_train)