python - 仅将张量添加到另一个张量的一部分
问题描述
我必须添加两个张量,一个在深度方向上的形状是另一个的倍数。这里有一个例子
t1 = tf.constant(3, shape=[2, 2, 2], dtype=tf.float32)
t2 = tf.constant(1, shape=[2, 2, 1], dtype=tf.float32)
我想使用类似tf.add
将第二个张量添加到第一个但仅在形状的第三个组件的第一层中的东西。有数字
t1 = [[[3, 3], [3, 3]],
[[3, 3], [3, 3]]]
t2 = [[[1, 1], [1, 1]]]
output = [[[4, 4], [4, 4]],
[[3, 3], [3, 3]]]
是否有内置功能可以做到这一点?
解决方案
添加 with 的第一个“列”,然后将其与 的其余列连接:t1
t2
t1
t1 = tf.constant(3, shape=[2, 2, 2], dtype=tf.float32)
t2 = tf.constant(1, shape=[2, 2, 1], dtype=tf.float32)
tf.InteractiveSession()
tf.concat((t1[...,0:1] + t2, t1[...,1:]), axis=2).eval()
#array([[[4., 3.],
# [4., 3.]],
# [[4., 3.],
# [4., 3.]]], dtype=float32)
请注意,您的第二个示例t2
具有不同的形状,即(1,2,2)
代替(2,2,1)
,在这种情况下,通过第一个轴进行切片和连接:
tf.concat((t1[0:1] + t2, t1[1:]), axis=0).eval()
#array([[[4., 4.],
# [4., 4.]],
# [[3., 3.],
# [3., 3.]]], dtype=float32)
推荐阅读
- sql - SQL get min id then get next min 与上一个相比
- python - 为什么我的代码(Python 加减法)不起作用?
- regex - 列出名称由两位数字组成的文件
- plsql - 更新语句 PLSQL
- python - 为什么 roc auc score 给出错误的分数?
- ios - 通过运行时问题展开 segue
- android - 在 Android 模拟器中模拟海拔位置
- javascript - 为什么我在输出的最后一行得到额外的未定义?
- android-studio - 如何缩短很长的代码或用代码替换短代码(执行相同的功能)?
- sitecore - Sitecore - 取消发布根文件夹前的确认