【问题标题】:Keras ValueError: No data provided for "add". Need data for each key in: ['add'] using Model APIKeras ValueError:没有为“添加”提供数据。需要每个键的数据:['add'] 使用模型 API
【发布时间】:2020-09-21 18:37:31
【问题描述】:

我想使用 Keras 进行二元分类。以下是我的代码:

input1 = tf.keras.Input(batch_size=batch_size, shape=(len1,))
output1 = tf.keras.layers.Dense(units=1, kernel_initializer='glorot_uniform')(input1)
input2 = tf.keras.Input(batch_size=batch_size, shape=(len2,))
output2 = tf.keras.layers.Dense(units=1, kernel_initializer='glorot_uniform')(input2)
inputs = [input1, input2]
outputs = [output1, output2]
logits = tf.keras.layers.Add()(outputs)
model = tf.keras.Model(inputs=inputs, outputs=logits)
model.compile(optimizer=tf.keras.optimizers.Adagrad(learning_rate=0.001),
              loss=tf.keras.losses.BinaryCrossentropy(from_logits=True))

这会给我错误ValueError: No data provided for "add". Need data for each key in: ['add']

我试过logits = tf.keras.layers.add(outputs),这会报同样的错误。

但是如果在logits = tf.keras.layers.Add()(outputs)之后我使用:

probs = tf.keras.layers.Softmax()(logits)
model = tf.keras.Model(inputs=inputs, outputs=probs)
model.compile(optimizer=tf.keras.optimizers.Adagrad(learning_rate=0.001),
              loss=tf.keras.losses.BinaryCrossentropy())

它会起作用的。我正在使用张量流 2.0

这里发生了什么?

【问题讨论】:

  • 对我来说没问题。版本 2.2.0

标签: python tensorflow machine-learning keras deep-learning


【解决方案1】:

我在这里使用 tf.dataset。事实证明,我需要为张量指定正确的输入和输出名称,因为 tf.dataset 在将数据提供给 keras 时正在寻找这些名称。

所以input1input2应该有输入特征的对应名称,并且由于标签命名为label,所以应该是logits = tf.keras.layers.Add(name="label")(outputs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多