ValueError:形状(64、49152、2)和(64、2)不兼容

时间:2020-06-07 16:12:49

标签: python-3.x tensorflow

我的python3代码存在以下问题:

错误:ValueError:形状(64、49152、2)和(64、2)不兼容

错误在model.fit中。 我不明白为什么它不起作用,不是因为我使用的是128 x 128像素的图像

我正在尝试训练带有图片的CNN 有什么建议吗?

完整代码

path = "input_path"
listing = os.listdir(path)
im_random = cv.imread("input_path//{0}".format(listing[23]))


imatrix = np.array([cv.imread("input_path//{0}".format(img)).flatten() for img in listing])


label = np.ones((imatrix.shape), dtype=int)

label[0:1001] = 0
label[1001:2001] = 1
data, label = shuffle(imatrix, label, random_state=2)
train_data = [data, label]


batch_size = 32
nb_classes = 2
nb_epoch = 30
img_rows, img_col = 128, 128
img_channels = 3
nb_filters = 32
nb_pool = 2
nb_conv = 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_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=4)

X_train = X_train.reshape(len(X_train), 3, 128, 128)
X_val = X_val.reshape(X_val.shape[0], 3, 128, 128)
X_test = X_test.reshape(X_test.shape[0], 3, 128, 128)

y_train = np_utils.to_categorical(y_train, nb_classes)
y_val = np_utils.to_categorical(y_val, nb_classes)
y_test = np_utils.to_categorical(y_test, nb_classes)

X_train = X_train.astype('float32')
X_val = X_val.astype('float32')
X_test = X_test.astype('float32')

X_train /= 255
X_val /= 255
X_test /= 255

model = tf.keras.models.Sequential()



model.add(tf.keras.layers.Conv2D(nb_filters, (nb_conv, nb_conv), padding="valid", activation='relu',input_shape=(img_channels, img_rows, img_col),data_format='channels_first'))





model.add(tf.keras.layers.Conv2D(nb_filters, (nb_conv, nb_conv), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(nb_pool, nb_pool)))
model.add(tf.keras.layers.Dropout(0.50))

model.add(tf.keras.layers.Convolution2D(nb_filters, (nb_conv, nb_conv), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(nb_pool, nb_pool)))
model.add(tf.keras.layers.Dropout(0.25))

model.add(tf.keras.layers.Convolution2D(nb_filters, (nb_conv, nb_conv), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(nb_pool, nb_pool)))
model.add(tf.keras.layers.Dropout(0.50))

model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(nb_classes, activation='softmax'))

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

history = model.fit(X_train, y_train, batch_size=batch_size, epochs=nb_epoch,
                     verbose=1, validation_data=(X_test, y_test))


0 个答案:

没有答案