首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于tf.concat接口更改,来自tensorlayer ConcatLayer的TypeError

由于tf.concat接口更改,来自tensorlayer ConcatLayer的TypeError
EN

Stack Overflow用户
提问于 2017-06-22 14:15:10
回答 2查看 246关注 0票数 0

我使用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

网络设计:

代码语言:javascript
复制
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')

错误消息:

代码语言:javascript
复制
 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.
EN

回答 2

Stack Overflow用户

发布于 2017-06-22 23:53:29

我解决了这个问题,尽管还有点迷惑。

在文件anaconda2/lib/python2.7/site-packages/tensorlayer/layers.py,的4717行中,只需保留tf.concat()的第一行

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2017-06-22 18:37:21

你能检查一下x和x_wb的尺寸吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44691509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档