拟合具有多个输入的模型
fiting a model with multiple inputs
我的代码中也有类似的问题,我写了一个简化版:
我的模型有两个输入,但无论我如何将数据发送到 fit
,它都不起作用。
这是问题的一个简短示例:
input1 = Input(shape=(1,), dtype='int64')
input2 = Input(shape=(1,), dtype='int64')
embeding1 = Embedding(1, 5, input_length=1, embeddings_regularizer=l2(1e-4) )(input1)
embeding2 = Embedding(1, 5, input_length=1, embeddings_regularizer=l2(1e-4) )(input2)
x = concatenate([embeding1, embeding2])
x = Flatten()(x)
x = Dense(1, activation='relu')(x)
model = Model([input1, input2],x)
model.compile(loss='mse', metrics=['accuracy'], optimizer='adam')
但我不知道如何运行适合,我试过了:
history = model.fit(
[[1,1], [1,1], [1,1]],
[1,1,1]
)
认为样本中的每个项目可能都需要有一个包含其两个属性的列表,
但后来我收到错误
ValueError: Layer model_3 expects 2 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 2) dtype=int64>]
我也试过了
history = model.fit(
[[1,1,1], [1,1,1]],
[1,1,1]
)
我想也许每个功能都需要两个列表。
错误:
ValueError: Data cardinality is ambiguous:
x sizes: 2
y sizes: 3
Make sure all arrays contain the same number of samples.
我还尝试了使用 ()
、np.array
、np.stack
切换 []
的变体
但我试过都没有用...
每个输入和输出的形状应为 (batch_size, 1)。所以这有效(批量大小为 32):
input_1 = np.zeros((32, 1))
input_2 = np.zeros((32, 1))
outs = np.ones((32, 1))
history = model.fit([input_1, input_2], outs)
为了匹配“样本数”,我尝试了多种输入形状,但仅将 tensorflow 版本从 2.7.0 切换到 2.0.0 就解决了我的问题。我想这是上个版本的一些错误。
我的代码中也有类似的问题,我写了一个简化版:
我的模型有两个输入,但无论我如何将数据发送到 fit
,它都不起作用。
这是问题的一个简短示例:
input1 = Input(shape=(1,), dtype='int64')
input2 = Input(shape=(1,), dtype='int64')
embeding1 = Embedding(1, 5, input_length=1, embeddings_regularizer=l2(1e-4) )(input1)
embeding2 = Embedding(1, 5, input_length=1, embeddings_regularizer=l2(1e-4) )(input2)
x = concatenate([embeding1, embeding2])
x = Flatten()(x)
x = Dense(1, activation='relu')(x)
model = Model([input1, input2],x)
model.compile(loss='mse', metrics=['accuracy'], optimizer='adam')
但我不知道如何运行适合,我试过了:
history = model.fit(
[[1,1], [1,1], [1,1]],
[1,1,1]
)
认为样本中的每个项目可能都需要有一个包含其两个属性的列表, 但后来我收到错误
ValueError: Layer model_3 expects 2 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 2) dtype=int64>]
我也试过了
history = model.fit(
[[1,1,1], [1,1,1]],
[1,1,1]
)
我想也许每个功能都需要两个列表。 错误:
ValueError: Data cardinality is ambiguous:
x sizes: 2
y sizes: 3
Make sure all arrays contain the same number of samples.
我还尝试了使用 ()
、np.array
、np.stack
切换 []
的变体
但我试过都没有用...
每个输入和输出的形状应为 (batch_size, 1)。所以这有效(批量大小为 32):
input_1 = np.zeros((32, 1))
input_2 = np.zeros((32, 1))
outs = np.ones((32, 1))
history = model.fit([input_1, input_2], outs)
为了匹配“样本数”,我尝试了多种输入形状,但仅将 tensorflow 版本从 2.7.0 切换到 2.0.0 就解决了我的问题。我想这是上个版本的一些错误。