【问题标题】:How to use tile function in Keras?如何在 Keras 中使用平铺功能?
【发布时间】:2023-03-09 02:00:02
【问题描述】:

我想用 Keras 构建一个神经网络,但我遇到了一个错误: AttributeError: 'NoneType' object has no attribute '_inbound_nodes',这是我的示例代码:

from keras.layers.merge import concatenate

img = Input(shape=(64,64,3))
text_input = Input(shape=(192,))
text_emb = Reshape(target_shape=(1, 1, 256))(Dense(256, activation='relu')(text_input))
tiled_emb = keras.backend.tile(text_emb, (-1, 64, 64, 1))
img_feat = Conv2D(400,4,padding='same')(img)
con = concatenate([tiled_emb,img_feat])
conv4 = Conv2D(512, 1)(con)

flat = Flatten()(conv4)
validity = Dense(1, activation='sigmoid')(flat)

Model([img, text_input], validity)

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    出现这个错误是因为 keras.backend.tile 是一个函数而不是一个层,使得 tiled_emb 成为一个张量。然后在尝试构建网络并遇到它期望层的张量时生成错误(因此未定义 attr _inbound_nodes)。

    您可以使用keras.layers.lambda 层将任何函数转换为层,例如:

    tiled_emb = Lambda(keras.backend.tile, arguments={'n':(-1, 64, 64, 1)})(text_emb)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      相关资源
      最近更新 更多