【问题标题】:Using an Embedding layer in the Keras functional API在 Keras 功能 API 中使用嵌入层
【发布时间】:2021-02-22 03:48:29
【问题描述】:

使用 Keras 功能 API 执行基本操作似乎会产生错误。例如,以下失败:

from keras.layers import InputLayer, Embedding
input = InputLayer(name="input", input_shape=(1, ))
embedding = Embedding(10000, 64)(input)

这会产生错误:

AttributeError: 'str' 对象没有属性 'base_dtype'

然后我可以使用 input_length 参数“作弊”,但是当我尝试连接两个这样的嵌入时,这会失败:

from keras.layers import InputLayer, Embedding, Concatenate
embedding1 = Embedding(10000, 64, input_length=1)
embedding2 = Embedding(10000, 64, input_length=1)
concat = Concatenate()([embedding1 , embedding2])

这给出了错误:

TypeError: 'NoneType' 对象不可下标

当我改用“concatenate”(小写字母)时出现同样的错误(一些消息来源似乎说如果使用函数式 API,则应该改用它)。

我做错了什么?

我在tensorflow版本2.3.1,keras版本2.4.3,python版本3.6.7

【问题讨论】:

    标签: python-3.x tensorflow keras


    【解决方案1】:

    我强烈建议使用tf.keras 而不是keras

    它不起作用,因为InputLayerkeras.Layer 的一个实例,而keras.layers.InputTensor 的一个实例。 layer.__call__() 的参数应该是 Tensor 而不是 keras.Layer

    import tensorflow as tf
    
    inputs = tf.keras.layers.Input((1,))
    print(type(inputs)) # <class 'tensorflow.python.framework.ops.Tensor'>
    input_layer = tf.keras.layers.InputLayer(input_shape=(1,))
    print(type(input_layer)) # <class 'tensorflow.python.keras.engine.input_layer.InputLayer'>
    
    

    您将InputLayerSequential API 一起使用。当您使用函数式 API 时,您应该改用 tf.keras.layers.Input()

    import tensorflow as tf
    
    inputs = tf.keras.layers.Input((1, ), name="input", )
    embedding = tf.keras.layers.Embedding(10000, 64)(inputs)
    

    与第二个例子相同:

    import tensorflow as tf
    
    inputs = tf.keras.layers.Input((1, ), name="input", )
    embedding1 = tf.keras.layers.Embedding(10000, 64)(inputs)
    embedding2 = tf.keras.layers.Embedding(10000, 64)(inputs)
    
    concat = tf.keras.layers.Concatenate()([embedding1, embedding2])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 2022-01-23
      • 2020-03-12
      • 2017-11-26
      • 2018-08-18
      • 2018-09-26
      相关资源
      最近更新 更多