我使用tensorlayer的concatLayer来连接两个输入,一个是嵌入,另一个是其他额外的输入。tl.layers.ConcatLayer总是运行到TypeError中:"Expected int32,got包含'_Message‘类型的张量。“
似乎tf.concat() api的变化可能是一个原因,但我使用的是tf 1.2.0 + tensorlayer 1.5.1 (python 2.7.13 | Anaconda 4.3.0)
有人能帮上忙吗?谢谢-Wei
网络设计:
emb_net = tl.layers.EmbeddingInputlayer(
inputs = x,
vocabulary_size = VOCAB_SIZE,
embedding_size = FLAGS.embedding_size,
E_init = tf.random_uniform_initializer(
-FLAGS.init_scale, FLAGS.init_scale),
name = 'embedding')
word_bound = tl.layers.InputLayer(
inputs = x_wb,
name = 'word_boundary')
network = tl.layers.ConcatLayer(
layer = [emb_net, word_bound],
concat_dim = 1,
name = 'concat_layer')错误消息:
File "./tensorlayer_lstm_classifier.py", line 147, in do_training
reuse=None)
File "./tensorlayer_lstm_classifier.py", line 53, in inference
name = 'concat_layer')
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorlayer/layers.py", line 4717, in __init__
self.outputs = tf.concat(concat_dim, self.inputs, name=name)
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorflow/python/ops/array_ops.py", line 1043, in concat
dtype=dtypes.int32).get_shape(
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 676, in convert_to_tensor
as_ref=False)
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 741, in internal_convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py", line 113, in _constant_tensor_conversion_function
return constant(v, dtype=dtype, name=name)
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py", line 102, in constant
tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape))
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 374, in make_tensor_proto
_AssertCompatible(values, dtype)
File "/Users/lin/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 302, in _AssertCompatible
(dtype.name, repr(mismatch), type(mismatch).__name__))
TypeError: Expected int32, got list containing Tensors of type '_Message' instead.发布于 2017-06-22 23:53:29
我解决了这个问题,尽管还有点迷惑。
在文件anaconda2/lib/python2.7/site-packages/tensorlayer/layers.py,的4717行中,只需保留tf.concat()的第一行
try: # TF1.0
self.outputs = tf.concat(self.inputs, concat_dim, name=name)
except: # TF0.12
self.outputs = tf.concat(concat_dim, self.inputs, name=name)发布于 2017-06-22 18:37:21
你能检查一下x和x_wb的尺寸吗?
https://stackoverflow.com/questions/44691509
复制相似问题