【发布时间】:2020-04-11 17:22:13
【问题描述】:
我有一个非常简单的 keras 顺序模型:
model = keras.models.Sequential([
keras.layers.SimpleRNN(1, input_shape=[None, 1], return_sequences=True),
])
model.compile(loss='mse')
我的(玩具)数据如下所示:
X = np.array([[1,2],[3,4],[5,6], [7,8]])[...,np.newaxis]
y = np.array([3,5,7,9])[..., np.newaxis]
X.shape -> (4,2,1)
y.shape -> (4,1)
因为我return_sequences,我希望我的输出形状是(4,2,1)。
这也是model.predict(X)返回的内容。
我的问题:当模型预测输出的形状与y 的形状不匹配时,如何在拟合中计算损失?keras.layers.mse(model.predict(X), y) 引发形状不匹配..
要试验的完整代码:
from tensorflow import keras
import numpy as np
X = np.array([[1,2],[3,4],[5,6], [7,8]])[...,np.newaxis]
y = np.array([3,5,7,9])[..., np.newaxis]
print(X.shape)
print(y.shape)
model = keras.models.Sequential([
keras.layers.SimpleRNN(1, input_shape=[None, 1], return_sequences=True),
])
model.compile(loss='mse', optimizer='adam')
model.summary()
model.fit(X, y, epochs = 1)
print(model.predict(X).shape)
# this fails as expected
# keras.losses.mse(model.predict(X), y)
版本:keras 2.2.4-tf 和 tensorflow 2.1.0
【问题讨论】:
标签: python keras recurrent-neural-network