### 层sequential的输入0与层不兼容:期望输入形状的轴-1的值为1,但接收到的输入形状为

回溯:

ValueError: 层sequential的输入0与层不兼容:期望输入形状的轴-1的值为1,但接收到的输入形状为(None, 1, 300, 300)


import tensorflow as tffrom keras.models import Sequentialfrom keras.layers.core import Dense, Dropout, Activation, Flattenfrom keras.layers.convolutional import Convolution2D, MaxPooling2Dfrom keras.layers import Conv2D, MaxPool2Dfrom keras.optimizers import SGD,RMSprop,Adamfrom keras.utils import np_utilsimport numpy as npimport matplotlib.pyplot as pltimport matplotlibimport osimport theanofrom PIL import Imagefrom numpy import *from sklearn.utils import shufflefrom sklearn.model_selection import train_test_splitimg_rows, img_cols = 300, 300img_channels = 1path1 = "./images"path2 = "./resize"listing = os.listdir(path1)listing2 = list(listing)num_samples=size(listing)for i in range(len(listing)):    if "jpg" in listing[i]:        im = Image.open(path1 + '/' + listing[i])           img = im.resize((img_rows,img_cols))        gray = img.convert('L')        gray.save(path2 +'/' +  listing[i], "JPEG")    elif "txt" in listing[i]:        listing2.remove(listing[i])imlist = os.listdir(path2)im1 = array(Image.open(path2 + '/'+ imlist[0]))m,n = im1.shape[0:2]imnbr = len(imlist)immatrix = array([array(Image.open(path2 + '/'+ im2)).flatten()              for im2 in imlist],'f')                label=np.ones((num_samples,),dtype = int)label[0:1260]=0label[1260:2716]=1label[2716:]=2data,Label = shuffle(immatrix,label, random_state=2)train_data = [data,Label]img=immatrix[167].reshape(img_rows,img_cols)plt.imshow(img)plt.imshow(img,cmap='gray')print (train_data[0].shape)print (train_data[1].shape)batch_size = 32classes = 3epochs = 20filters = 32pool = 2conv = 3(X, y) = (train_data[0],train_data[1])X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=4)X_train = X_train.reshape(X_train.shape[0], 1, img_rows, img_cols)X_test = X_test.reshape(X_test.shape[0], 1, img_rows, img_cols)X_train = X_train.astype('float32')X_test = X_test.astype('float32')X_train /= 255X_test /= 255print('X_train shape:', X_train.shape)print(X_train.shape[0], 'train samples')print(X_test.shape[0], 'test samples')Y_train = np_utils.to_categorical(y_train, classes)Y_test = np_utils.to_categorical(y_test, classes)i = 256plt.imshow(X_train[i, 0], interpolation='nearest')print("label : ", Y_train[i,:])model = Sequential()model.add(Convolution2D(filters, conv, conv, padding = 'valid',                        input_shape = (img_rows, img_cols, 1),                        data_format = "channels_last"))model.add(Activation('relu'))model.add(Convolution2D(filters, conv, conv, padding = 'valid'))model.add(Activation('relu'))model.add(Convolution2D(filters, conv, conv, padding = 'valid'))model.add(Activation('relu'))model.add(MaxPooling2D(pool_size = (pool, pool), strides = pool, padding = "valid"))model.add(Dropout(0.5))model.add(Flatten())model.add(Dense(512))model.add(Activation('relu'))model.add(Dropout(0.5))model.add(Dense(classes))model.add(Activation('softmax'))model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])print(model.summary())hist = model.fit(X_train, Y_train, batch_size = batch_size, epochs = epochs,              verbose=1, validation_data=(X_test, Y_test))

我尝试了各种方法,例如ValueError: 层sequential的输入0与层不兼容:期望输入形状的轴-1的值为1,但我仍然面临同样的错误。请问有人有解决方案吗?

我知道问题出在这一行

model.add(Convolution2D(filters, conv, conv, padding = 'valid',                        input_shape = (img_rows, img_cols, 1),                        data_format = "channels_last"))

但我不太确定如何修复它。

谢谢!


回答:

这实际上是一个相当描述性/准确的错误消息。你提供的输入形状是(batch, img_rows, img_cols, 1),但它显然看到的图像形状是(batch, 1, 300, 300)。所以看起来你只是设置了一个维度错误。只要做类似于

train_data = tf.transpose(train_data, [0, 2, 3, 1])

你应该就可以解决问题了

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注