Keras(tensorflow后端)出现“TypeError:unhashable type:'Dimension'”错误

3

大家好,当我在拟合这个模型时,出现了一个尺寸错误,有人知道为什么吗?

num_classes = 11
input_shape = (64,64,1)
batch_size = 128
epochs = 12
X_train = tf.reshape(X_train, [-1, 64, 64, 1])
X_test = tf.reshape(X_test, [-1, 64, 64, 1])

model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), strides=1, activation='relu', input_shape=input_shape)) 
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,
          optimizer=keras.optimizers.Adadelta(),
          metrics=['accuracy'])

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

每个变量的维度为:
X_train = (27367, 64, 64, 1)
X_test = (4553, 64, 64, 1)
y_train = (164202, 11)
y_test = (27318, 11)

请问您能否发布完整的堆栈跟踪信息? - Imran
1个回答

4
这是因为你使用了tf.reshape,它返回一个张量,而Keras模型的fit方法不太适用于张量。建议改用np.reshape,它可以完成完全相同的操作。

好的,现在它可以工作了。非常感谢。基本上,我需要对其进行重塑,然后添加通道。即X_train = X_train.reshape(X_train.shape [0],img_rows,img_cols,1) - Joe Phongpreecha
我应该如何做到这一点? - Joe Phongpreecha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接