![](/img/trans.png)
[英]Tensorflow TypeError: Cannot convert 1e-12 to EagerTensor of dtype int32
[英]TypeError: Cannot convert 0.0 to EagerTensor of dtype int32
我正在研究 TensorFlow 2.0 和 Transformer,我在輸入時出現標題錯誤
value = Embedding(tf.shape(vocals).numpy()[0], d_model=512)
vocals
是一個形狀為 (100, 45) 的張量。 這一層的代碼是:
def positional_encoding(length, d_model):
encoded_vec = tf.Variable([pos/tf.pow(10000, 2*i/d_model) for pos in range(length) for i in range(d_model)],
dtype=tf.float32)
encoded_vec[::2] = tf.sin(encoded_vec[::2])
encoded_vec[1::2] = tf.cos(encoded_vec[1::2])
return encoded_vec.reshape([sentence_length, dim])
class Embedding(tf.keras.layers.Layer):
def __init__(self, vocab_size, d_model, dropout=0.1):
super().__init__()
self.d_model = d_model
self.token_embedding = tf.keras.layers.Embedding(vocab_size, d_model)
self.positional_encoding = positional_encoding(vocab_size, d_model)
self.dropout = tf.keras.layers.Dropout(dropout)
def call(self, x):
seq_len = tf.shape(x)[1]
x = self.token_embedding(x)
x *= tf.math.sqrt(tf.cast(self.d_model, tf.float32))
x += self.positional_encoding[:, :seq_len, :]
x = self.dropout(x)
return x
我對以下消息有同樣的問題
類型錯誤:無法將 1e-07 轉換為 dtype uint8 的 EagerTensor
嘗試將人聲轉換為所需的數據類型np.float32
,因為它詢問Cannot convert 0.0 to EagerTensor of dtype int32
我相信您的人聲數據類型是int32
。
改變
encoded_vec = tf.Variable([pos/tf.pow(10000, 2*i/d_model) for pos in range(length) for i in range(d_model)],
dtype=tf.float32)
至
encoded_vec = np.array([pos/10000 ** (2*i/d_model) for pos in range(length) for i in range(d_model)],
dtype=tf.float32)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.