![](/img/trans.png)
[英]Keras ValueError: Dimensions must be equal, but are 6 and 9 for '{{node Equal}}
[英]Keras Sequential - ValueError: Dimensions must be equal
我使用具有以下形状的 X 和 y 数据(它们都是 np 数组):
print(X.shape)
print(y.shape)
(1075, 5, 50)
(1075, 5)
该模型:
# define the keras model
model = Sequential()
model.add(Dense(512, input_shape=(5, 50), activation='relu'))
model.add(Dense(64, activation='relu'))
model.compile(loss='categorical_crossentropy', optimizer="Adam", metrics=['accuracy'])
history = model.fit(X, y, epochs=100, batch_size=10, validation_split=0.2)
我收到以下错误:
ValueError
Traceback (most recent call last)
Cell In[79], line 1
----> 1 history = model.fit(X, y, epochs=100, batch_size=10, validation_split=0.2, callbacks=[callback])
ValueError: Shapes (10, 5) and (10, 5, 64) are incompatible
如果我将最后一层密度从 64 更改为 10,则错误输出会发生变化:
model.add(Dense(10, activation='relu'))
ValueError: Shapes (10, 5) and (10, 5, 10) are incompatibl
我必须将最后一层改变到什么维度,以便它适合我的 y 数据的形状?
您的代码中有两个问题。 首先你的模型的输出形状与你的'y'不匹配所以你的最后一层是这样的(我添加了softmax因为我猜你正在做多类分类)
model.add(tf.keras.layers.Dense(5, activation='softmax'))
但是对于最后一层,你仍然有一个 2D 形状到 1D 形状,所以你需要在传递到最后一层之前将它展平
完整的工作示例是
X = tf.ones((1075, 5, 50))
y = tf.ones((1075, 5))
print(X.shape)
print(y.shape)
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(512, input_shape=(5, 50), activation='relu'))
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Flatten(input_shape=(5,5)))
model.add(tf.keras.layers.Dense(5, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer="Adam", metrics=['accuracy'])
print(model.summary())
history = model.fit(X, y, epochs=100, batch_size=10, validation_split=0.2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.