在Tensorflow 2.0中使用自定义嵌入层时出错

2024-10-02 12:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经做了我的自定义嵌入层,但当我测试它时,我得到了错误。 下面是我的自定义嵌入层

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_数据集(来自tensorflow切片)时,它的形状是一批 x=(16,13128)和y=(16,14)

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

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


Tags: selftokeninittfdef错误trainembedding
1条回答
网友
1楼 · 发布于 2024-10-02 12:25:16

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

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

或者只是:

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

相关问题 更多 >

    热门问题