【问题标题】:Getting error while using my custom embedding layer in Tensorflow 2.0在 TensorFlow 2.0 中使用我的自定义嵌入层时出错
【发布时间】:2020-09-19 12:13:26
【问题描述】:

我已经制作了我的自定义嵌入层,但在测试它时出现错误。 下面是我的自定义嵌入层。

class EndTokenLayer(Layer):

  def __init__(self, embedding_dim=128, **kwargs):
    super(EndTokenLayer, self).__init__(**kwargs)
    self.end_token_embedding = tf.Variable(initial_value=tf.random.uniform(shape=(embedding_dim,)), trainable=True)

  def call(self, inputs):
    end_token = tf.tile(tf.reshape(self.end_token_embedding, shape=(1, 1, self.end_token_embedding.shape[0])), [tf.shape(inputs)[0],1,1])
    return tf.keras.layers.concatenate([inputs, end_token], axis=1)

但是当我测试具有一批形状的 train_dataset(来自 tensorflow 切片)时 x = (16,13,128) 和 y = (16,14)

temp = EndTokenLayer()
print(temp(inputs = train.take(1)))

错误日志: ValueError: 尝试将类型 () 不受支持的值 () 转换为 Tensor。

【问题讨论】:

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


    【解决方案1】:

    train.take(1) 将为您提供一个包含单个元素的新数据集,而不是数据集的第一个元素。也许你想要这样的东西:

    temp = EndTokenLayer()
    for elem in train.take(1):
        print(temp(inputs=elem))
    

    或者只是:

    temp = EndTokenLayer()
    print(temp(inputs=next(iter(train))))
    

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 1970-01-01
      • 2020-05-20
      • 2021-11-05
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多