【问题标题】:AttributeError when using keras.concatenate layer使用 keras.concatenate 层时出现 AttributeError
【发布时间】:2019-10-21 00:54:37
【问题描述】:

我正在尝试基于用于图像的 Inception 架构构建神经网络,但用于一维向量。

我基于此链接 https://keras.io/getting-started/functional-api-guide/ 的 keras 入门指南中创建的模型:

tf.keras.backend.clear_session()
logger = tf.get_logger()
logger.setLevel(logging.ERROR)

input_vector = Input(shape=(71276,1),)

tower_1 = tf.keras.layers.Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_1')(input_vector)
tower_1 = tf.keras.layers.Conv1D(filters=64, kernel_size=3, padding='same', activation='relu', name='conv_2')(tower_1)

tower_2 = tf.keras.layers.Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_3')(input_vector)
tower_2 = tf.keras.layers.Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_4')(tower_2)

tower_3 = tf.keras.layers.MaxPooling1D(pool_size=3, strides=1, padding='same')(input_vector)
tower_3 = tf.keras.layers.Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_4')(tower_3)

output = tf.keras.layers.concatenate([tower_1, tower_2, tower_3])

model = tf.keras.models.Model(inputs=input_vector, outputs=output)
model.compile(loss='mse',
              optimizer=tf.keras.optimizers.Adam(lr=0.001),
              metrics=['mae'])

model.summary()

这是我的代码:

from keras.layers import Conv1D, MaxPooling1D, Input
from keras.models import Model

tf.keras.backend.clear_session()
logger = tf.get_logger()
logger.setLevel(logging.ERROR)

input_vector = Input(shape=(71276,1),)

tower_1 = Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_1')(input_vector)
tower_1 = Conv1D(filters=64, kernel_size=3, padding='same', activation='relu', name='conv_1')(tower_1)

tower_2 = Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_1')(input_vector)
tower_2 = Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_1')(tower_2)

tower_3 = MaxPooling1D(pool_size=3, strides=1, padding='same')(input_vector)
tower_3 = Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_1')(tower_3)

output = tf.keras.layers.concatenate([tower_1, tower_2, tower_3])

model = Model(inputs=input_vector, outputs=output)
model.compile(loss='mse',
              optimizer=tf.keras.optimizers.Adam(lr=0.001),
              metrics=['mae'])

model.summary()

执行时出现以下错误,不明白为什么:

AttributeError                            Traceback (most recent call last)
<ipython-input-9-2931ae837421> in <module>()
      6 input_vector = Input(shape=(71276,1),)
      7 
----> 8 tower_1 = tf.keras.layers.Conv1D(filters=64, kernel_size=1, padding='same', activation='relu', name='conv_1')(input_vector)
      9 tower_1 = tf.keras.layers.Conv1D(filters=64, kernel_size=3, padding='same', activation='relu', name='conv_2')(tower_1)
     10 

5 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/base_layer.py in <lambda>(t)
   2056             `call` method of the layer at the call that created the node.
   2057     """
-> 2058     inbound_layers = nest.map_structure(lambda t: t._keras_history.layer,
   2059                                         input_tensors)
   2060     node_indices = nest.map_structure(lambda t: t._keras_history.node_index,

AttributeError: 'tuple' object has no attribute 'layer'

我对卷积层没有太多经验,所以很可能我犯了一个非常明显的错误。网上搜索,没找到有同样问题的人。

我在 Google Colaboratory 的 python 3 运行时运行它。

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: python tensorflow keras neural-network


    【解决方案1】:

    一些事情:

    • 您的所有图层都具有相同的名称?我敢打赌这可能会导致很多奇怪的错误
    • tower_3 与其他两座塔的形状不同。串联是不可能的。 (您使用的是MaxPooling1D,请查看摘要以确认。)
    • 你正在混合kerastf.keras,这肯定是个大问题。只选择一个。

    【讨论】:

    • 我已经根据您的第一点和最后一点编辑了我的代码。我仍然遇到与以前相同的错误。您建议如何根据您的第二点更改我的代码?同样根据文档,两者都有一个 3D 张量作为输出,MaxPooling1D: (batch_size, downsampled_steps, features) 和 Conv1D: (batch, new_steps, filters)。
    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    相关资源
    最近更新 更多