我实例化一个类,并在传入参数时出现一些错误。
我尝试将数据转换为所需的类型,但得到相同的错误
class PositionalEmbedding(tf.keras.Model):
def __init__(self, d_model, dropout, max_len=5000):
super(PositionalEmbedding,self).__init__()
self.dropout = tf.keras.layers.Dropout(dropout,dtype = 'float32')
pe = tf.zeros([max_len,d_model],dtype = 'float32')
position = tf.expand_dims(tf.range(max_len),axis = 1)
pe = 位置嵌入(20,0)
无效参数错误回溯(最近一次调用) 在 () 中 1 图(图尺寸=(15,5)) 2 ----> 3 pe = 位置嵌入(20,0) 4 5 s = pe(tf.变量(tf.zeros(1,100,20)))
4 帧/usr/local/lib/python3.6/dist-packages/six.py in raise_from(value, from_value)
InvalidArgumentError: 无法将 Mul 计算为输入 #1(从零开始) 应该是 int32 张量,但是一个浮点张量 [Op:Mul] 名称: mul/
你使用的是哪个张量流版本?按照 tf 2.0 和 tf 1.14 中为我写的一样工作(抱歉,没有足够的代表将其作为评论)
注:注:我假设要更正缩进,这就是您的实际意思,因为任何其他更正都会使某些行变得多余......但如果这是错误的,请纠正
class PositionalEmbedding(tf.keras.Model):
def __init__(self, d_model, dropout, max_len=5000):
super(PositionalEmbedding,self).__init__()
self.dropout = tf.keras.layers.Dropout(dropout,dtype = 'float32')
pe = tf.zeros([max_len,d_model],dtype = 'float32')
position = tf.expand_dims(tf.range(max_len),axis = 1)
pe = PositionalEmbedding(20, 0)
问题可能不是由于模型的变量,而是由于输入。 将模型的输入转换为 float32。
- 如果输入是数字数组
inp = inp.astype('float32')
- 如果输入是张量
inp = tf.cast(inp, tf.float32)