【发布时间】:2020-05-27 17:32:28
【问题描述】:
问题
我正在使用 Model API 创建一个 Keras 网络,该网络接受两个输入和一个输出。训练网络时出现以下错误:
检查模型输入时出错:您输入的 Numpy 数组列表 传递给您的模型的大小不是模型预期的大小。预期的 查看 2 个数组,但得到了以下 1 个数组的列表:
尽管有这个错误,输入 X 数组的形状为 (2,8),输出 y 数组的形状为 (1,4)。
已经尝试过的方法
关于 SO 有许多类似的问题,但是,他们的解决方案主要围绕确保 X 和 y 是 Numpy 数组。从我的实现中可以看出,我已经这样做了。因此,我不认为这是一个重复的问题。
实施
我已将模型定义如下:
opt = Adam(lr = alpha)
input = Input(shape=(input_dim_,))
delta = Input(shape=[1])
l1 = Dense(units = 1024, input_dim = input_dim_, activation = "relu")(input)
l2 = Dense(units=512, activation="relu")(l1)
def loss_function (y,y_pred):
y_pred = K.clip(y_pred,1e-8,1-1e-8)
return K.sum(-y*K.log(y_pred)*delta)
if model_type == "actor":
out = Dense(units = output_dim_, activation="softmax")(l2)
model = Model(input=[input,delta], output = [out])
model.compile(loss = loss_function,optimizer=opt)
并通过执行以下操作来训练模型:
X = [s_t,delta]
X = np.array(X)
actor.fit(X,y,verbose=0)
【问题讨论】:
-
我很困惑。您能否提供正确形状的虚假数据,以便我试一试?用
np.random.rand()什么的。 -
@NicolasGervais X = np.random.rand(2,8) y = np.random.rand(1,4)
标签: python numpy tensorflow keras