在 Tensorflow 中连接张量

Posted

技术标签:

【中文标题】在 Tensorflow 中连接张量【英文标题】:Concatenating tensors in Tensorflow 【发布时间】:2017-08-20 23:25:04 【问题描述】:

我想在 Tensorflow 中连接一个变量和一个张量,但 Tensorflow 不会让这两种类型连接。

这是我连接两个张量的方法:

self.embedded_chars = tf.nn.embedding_lookup(self.W, self.input_x) //returns Tensor object
v1 = tf.Variable(tf.zeros([88,77]),dtype=tf.float32)
self.embedded_chars = tf.concat(1,[self.embedded_chars,v1])

但我收到以下错误:

文件“test.py”,第 93 行,在 l2_reg_lambda=FLAGS.l2_reg_lambda) 文件“test.py”,第 31 行,在 init 中 self.embedded_chars = tf.concat(1,[self.embedded_chars,v1]) 文件“lib/python2.7/site-packages/tensorflow/python/ops/array_ops.py”,行 1047,连续 dtype=dtypes.int32).get_shape(文件“lib/python2.7/site-packages/tensorflow/python/framework/ops.py”,行 第651章 as_ref=False)文件“lib/python2.7/site-packages/tensorflow/python/framework/ops.py”,行 716,在 internal_convert_to_tensor 中 ret = conversion_func(值,dtype=dtype,name=name,as_ref=as_ref)文件 “lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py”, 第 176 行,在 _constant_tensor_conversion_function 返回常量(v,dtype=dtype,name=name)文件“lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py”, 第 165 行,保持不变 tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape)) 文件 “lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py”, 第 367 行,在 make_tensor_proto 中 _AssertCompatible(values, dtype) 文件“lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py”, 第 302 行,在 _AssertCompatible 中 (dtype.name, repr(mismatch), type(mismatch).name)) TypeError: Expected int32, got list contains Tensors of type '_Message' 而是。

如何正确连接变量和张量?

【问题讨论】:

【参考方案1】:

假设您使用的是 1.0 版: 如果您查看文档,您会看到 concat (https://www.tensorflow.org/api_docs/python/tf/concat) 希望将值作为第一个参数,将轴作为第二个参数。

你的代码应该是:

self.embedded_chars = tf.nn.embedding_lookup(self.W, self.input_x) //returns Tensor object
v1 = tf.Variable(tf.zeros([88,77]),dtype=tf.float32)
self.embedded_chars = tf.concat([self.embedded_chars,v1],1)

由于我没有测试它,如果它有效,请告诉我!

干杯!

【讨论】:

这仅适用于 1.0 版。 嗯,很公平!假设熊使用了这个版本。 @Bear:你用的是什么版本的 Tensorflow?

以上是关于在 Tensorflow 中连接张量的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 TensorFlow 连接两个具有不同形状的张量?

当我在 Tensorflow 上使用 Keras API 连接两个模型时,模型的输入张量必须来自 `tf.layers.Input`

tensorflow-队列

如何使用 TensorFlow 张量索引列表?

tensorflow-tf.concat

tensorflow-条件循环控制