Python 这里的输入形状应该是什么?
我在将问题发布到堆栈溢出方面没有太多经验。请原谅我的错误。我会尽量做到彻底 我有两个numpy阵列:Python 这里的输入形状应该是什么?,python,tensorflow,conv-neural-network,Python,Tensorflow,Conv Neural Network,我在将问题发布到堆栈溢出方面没有太多经验。请原谅我的错误。我会尽量做到彻底 我有两个numpy阵列: 具有形状的X(78300、90、90) y形(78300,29) X是一组黑白图像,具有高度和宽度(90,90) y是X对应的编码类标签。(编码如中所示 y=tensorflow.keras.utils.to\u分类(标签)) 我正试图就这些数据对以下CNN进行培训 from tensorflow.keras import utils from tensorflow.keras.optimi
- X是一组黑白图像,具有高度和宽度(90,90)
- y是X对应的编码类标签。(编码如中所示
)y=tensorflow.keras.utils.to\u分类(标签)
from tensorflow.keras import utils
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D, BatchNormalization
from tensorflow.keras.callbacks import ModelCheckpoint
model = Sequential()
model.add(Conv2D(64, (3, 3), input_shape=(90, 90, 1), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(BatchNormalization())
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(1024, activation='sigmoid'))
model.add(Dense(29, activation='softmax'))
我在运行时收到以下错误
n_classes = 29
batch = 64
epochs = 5
learning_rate = 0.001
adam = Adam(lr=learning_rate)
model.compile(optimizer=adam,
loss='categorical_crossentropy',
metrics=['accuracy'])
cp_callback = ModelCheckpoint(filepath=os.path.join("/output_dir", "result_folder"),
save_weights_only=True,
verbose=1)
history = model.fit(x,
y,
batch_size=batch,
epochs=epochs,
validation_split=0.1,
shuffle=True,verbose=1,
callbacks=[cp_callback])
:ValueError:层顺序的输入0与层不兼容::预期的最小值ndim=4,找到的ndim=3。收到完整形状:[无、90、90]
我不知道出了什么问题请帮助我。另外,如果您可以链接一篇文档/文章/博客文章/视频,帮助我理解输入形状在各层中的细微差别,这将非常有帮助。形状应该是(78300,90,90,1)
重塑x
(添加尺寸):
什么是
tf.newshape
?我找不到有关的文档that@NicolasGervais这是打字错误。很抱歉请参阅editsI usedx=tf。展开尺寸(x,轴=-1)
。原来黑白图像没有通道的形状。谢谢你的帮助。我选择了这个答案作为正确答案。
x = x[..., tf.newaxis]