Tensorflow翻译教程修复0.12.1
我正在尝试从github上当前的主分支运行tensorflow 0.12.1的翻译教程() 我在这里()对Kangmo建议的seq2seq_model.py进行了更改,但得到了不同的错误Tensorflow翻译教程修复0.12.1,tensorflow,Tensorflow,我正在尝试从github上当前的主分支运行tensorflow 0.12.1的翻译教程() 我在这里()对Kangmo建议的seq2seq_model.py进行了更改,但得到了不同的错误 Creating 3 layers of 1024 units. Traceback (most recent call last): File "translate.py", line 317, in <module> tf.app.run() File "/usr/local/
Creating 3 layers of 1024 units.
Traceback (most recent call last):
File "translate.py", line 317, in <module>
tf.app.run()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 44, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
File "translate.py", line 314, in main
train()
File "translate.py", line 173, in train
model = create_model(sess, False)
File "translate.py", line 131, in create_model
dtype=dtype)
File "/home/TFRun/seq2seq_model.py", line 171, in __init__
softmax_loss_function=softmax_loss_function)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py", line 1195, in model_with_buckets
softmax_loss_function=softmax_loss_function))
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py", line 1110, in sequence_loss
softmax_loss_function=softmax_loss_function))
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py", line 1067, in sequence_loss_by_example
crossent = softmax_loss_function(target, logit)
File "/home/TFRun/seq2seq_model.py", line 111, in sampled_loss
num_samples, self.target_vocab_size),
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_impl.py", line 1191, in sampled_softmax_loss
name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_impl.py", line 974, in _compute_sampled_logits
array_ops.reshape(true_w, new_true_w_shape))
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/math_ops.py", line 357, in multiply
return gen_math_ops._mul(x, y, name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_math_ops.py", line 1625, in _mul
result = _op_def_lib.apply_op("Mul", x=x, y=y, name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 522, in apply_op
inferred_from[input_arg.type_attr]))
TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type int32 of argument 'x'.
创建3层1024个单元。
回溯(最近一次呼叫最后一次):
文件“translate.py”,第317行,在
tf.app.run()
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py”,第44行,正在运行
_系统出口(主(_sys.argv[:1]+标志_passthrough))
文件“translate.py”,第314行,在main中
列车()
列中第173行的文件“translate.py”
模型=创建模型(sess,False)
文件“translate.py”,第131行,在create_模型中
dtype=dtype)
文件“/home/TFRun/seq2seq_model.py”,第171行,在初始化中__
softmax_损耗函数=softmax_损耗函数)
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/legacy_-seq2seq/python/ops/seq2seq.py”,第1195行,模型中带有
softmax_损耗_函数=softmax_损耗_函数)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py”,第1110行,按顺序
softmax_损耗_函数=softmax_损耗_函数)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py”,第1067行,按示例顺序排列
crossent=软件最大损耗功能(目标,逻辑)
文件“/home/TFRun/seq2seq_model.py”,第111行,在采样损耗中
样本数、自我目标值、声音大小),
文件“/usr/local/lib/python2.7/dist packages/tensorflow/python/ops/nn_impl.py”,第1191行,在sampled_softmax_loss中
名称=名称)
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_impl.py”,第974行,在计算日志中
数组操作重塑(真的,新的真的形状)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/python/ops/math_ops.py”,第357行,以倍数表示
返回gen\u math\u ops.\u mul(x,y,name)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/python/ops/gen_math_ops.py”,第1625行,in_mul
结果=_op_def_lib.apply_op(“Mul”,x=x,y=y,name=name)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/python/framework/op_def_library.py”,第522行,在apply_op
根据[输入参数类型属性]推断出的属性)
TypeError:“Mul”Op的输入“y”的类型float32与参数“x”的类型int32不匹配。
有人知道修复此错误的方法吗?您需要将x张量转换为float32,因此在seq2seq_model.py中使用以下代码:
def sampled_loss(inputs,labels):
inputs= tf.cast(inputs, tf.float32)
labels = tf.reshape(labels, [-1, 1])
return tf.cast(tf.nn.sampled_softmax_loss(w_t, b, labels, inputs,num_samples,
self.target_vocab_size),tf.float32)
您还需要更换这一行
crossent = softmax_loss_function(target, logit)
与
在seq2seq.py的内部
crossent = softmax_loss_function(logit, target)