具有多个输入的馈送keras模型

时间:2018-07-14 17:38:27

标签: python machine-learning keras valueerror

我正在尝试与Keras打个招呼,陷入困境。 一开始,我有1层,其中1项输入和1项输出有效 直线近似值很好;)

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import RMSprop
from keras.losses import mean_squared_error
mo = Sequential()
d = Dense(1, input_shape=(1,))
mo.add(d)
mo.summary()

mo.compile(loss=mean_squared_error, optimizer=RMSprop(lr=0.4), metrics=['accuracy'])

mo.trainable = True

for i in range(-100, 100):
    mo.train_on_batch(x = [i], y = [i])

之后,我对2个输入参数很勇敢:

d = Dense(1, input_shape=(2,))
for i in range(-100, 100):
    mo.train_on_batch(x = [np.array([i,i])], y = [i])

np.array([1,1]).shape # gives (2,)

尽管我遇到一个例外:

  

ValueError:检查输入时出错:预期density_53_input具有形状(2,)但具有形状(1,)的数组

我尝试了[[i],[i]]之类的各种组合。

1 个答案:

答案 0 :(得分:1)

第一维始终是Keras中的批次维。批次大小是指一次通过(向前和向后)处理的样品数量。当您指定input_shape参数时,它不包括批次尺寸。因此,输入形状为(2,)的网络采用形状为(?,2)的输入数据,其中?代表批量。因此,您必须传递形状为(?,2)的数组:

mo.train_on_batch(x=[np.array([[i,i]])], y=[i])

因为:

np.array([[i,i]]).shape   # it is (1,2)