【问题标题】:TypeError from "tf.keras.layers.concatenate": The added layer must be an instance of class Layer. Found: Tensor来自“tf.keras.layers.concatenate”的TypeError:添加的层必须是类Layer的实例。找到:张量
【发布时间】:2019-12-10 14:12:35
【问题描述】:

我正在尝试合并三个图层并将其添加到模型中,但我从tf.keras.layers.concatenate 得到了一个Tensor,而不是一个图层?如何解决?

...
ipt = tf.keras.Input(shape=[10, 5])
convs = []
fs= [1, 2, 3]
for f in fs:
    conv = tf.keras.layers.Conv1D(activation='tanh', kernel_size=f, filters=200)(ipt)
    pool = tf.keras.layers.MaxPooling1D(10 - fsz + 1, padding="same")(conv)
    pool = tf.keras.layers.Flatten()(pool)
    convs.append(pool)
merge = tf.keras.layers.concatenate(convs, axis=1)

model = tf.keras.models.Sequential()
model.add(ipt)
model.add(merge)
...
TypeError: The added layer must be an instance of class Layer. Found: Tensor("concatenate/Identity:0", shape=(None, 600), dtype=float32)

【问题讨论】:

    标签: python tensorflow keras tf.keras


    【解决方案1】:

    我认为您没有以正确的方式使用模型。尝试通过以下方式更改您的代码。

    from tensorflow.keras import layers, models
    
    ipt = layers.Input(shape=[10, 5])
    convs = []
    fsz = 8
    fs= [1, 2, 3]
    for f in fs:
        conv = layers.Conv1D(activation='tanh', kernel_size=f, filters=200)(ipt)
        pool = layers.MaxPooling1D(10 - fsz + 1, padding="same")(conv)
        pool = layers.Flatten()(pool)
        convs.append(pool)
    merge = layers.Concatenate(axis=1)(convs)
    
    model = models.Model(inputs=ipt, outputs=merge)
    model.summary()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      相关资源
      最近更新 更多