使用多个输入喂养 keras 模型
Feeding keras model with multiple inputs
我正在尝试使用 Keras 做一个简单的 hello world,但卡住了。
一开始我有 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: Error when checking input: expected dense_53_input to have shape (2,) but got array with shape (1,)
我尝试了各种组合,例如 [[i],[i]]
。
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)
我正在尝试使用 Keras 做一个简单的 hello world,但卡住了。 一开始我有 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: Error when checking input: expected dense_53_input to have shape (2,) but got array with shape (1,)
我尝试了各种组合,例如 [[i],[i]]
。
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)