如何在张量流中进行成对加法
How to do pairwise addition in tensorflow
我是 tensorflow 的新手,所以这可能是一个简单的问题,但它真的让我很困惑
我正在尝试通过keras实现这个paper,背景是tensorflow
在第一阶段的训练中,他使用了softmax_pair
如果我们从上一个 fc
得到这个输出
vertical 是批量大小,这是 NoneType
x11 x12 x13 x14...
x21 x22 x23 x24...
x31 x32 x33 x34...
...
我们做指数运算,所以我们有
e11 e12 e13 e14...
e21 e22 e23 e24...
e31 e32 e33 e34...
...
然后,我卡在这里了
e11/(e11+e12) e12/(e11+e12) e13/(e13+e14) e14/(e13+e14)...
e21/(e21+e22) e22/(e21+e22) e23/(e23+e24) e24/(e23+e24)...
e31/(e31+e32) e32/(e31+e32) e33/(e33+e34) e34/(e33+e34)...
...
我不知道如何做成对加法
tf.transpose
和 tf.segment_sum
可能很棒
但经过研究我发现转置很昂贵
此外,在 tf.segment_sum
我只有一半大小的张量,
我不知道怎么加倍
哦,我正在考虑如何制作 segment_ids
那么我该如何计算呢?
谢谢!!
------------更新
我在论文中讲的部分是图3
fc输出为P2c-1和P2c,表示图像中class c出现或不出现的可能性
c=1,2,3...class
的数量
转置不贵吗?有时我看到这个,例如the comment ,也许我误解了这个?
tf.transpose
的 tensorflow 文档声明与 numpy tensorflow returns 不同的是一个新的张量 -> 内存。
假设 X
是你的张量 R x C
:
_, C = X.get_shape()
X_split = tf.split(1, C/2, X)
Y_split = [tf.nn.softmax(slice) for slice in X_split]
Y = tf.concat(1, Y_split)
C
将是列数,X_split
将是一个子张量列表,每个子张量有两列,Y_split
将为每个张量计算常规 softmax, Y
将加入softmaxes的结果。
我是 tensorflow 的新手,所以这可能是一个简单的问题,但它真的让我很困惑
我正在尝试通过keras实现这个paper,背景是tensorflow
在第一阶段的训练中,他使用了softmax_pair
如果我们从上一个 fc
得到这个输出
vertical 是批量大小,这是 NoneType
x11 x12 x13 x14...
x21 x22 x23 x24...
x31 x32 x33 x34...
...
我们做指数运算,所以我们有
e11 e12 e13 e14...
e21 e22 e23 e24...
e31 e32 e33 e34...
...
然后,我卡在这里了
e11/(e11+e12) e12/(e11+e12) e13/(e13+e14) e14/(e13+e14)...
e21/(e21+e22) e22/(e21+e22) e23/(e23+e24) e24/(e23+e24)...
e31/(e31+e32) e32/(e31+e32) e33/(e33+e34) e34/(e33+e34)...
...
我不知道如何做成对加法
tf.transpose
和 tf.segment_sum
可能很棒
但经过研究我发现转置很昂贵
此外,在 tf.segment_sum
我只有一半大小的张量,
我不知道怎么加倍
哦,我正在考虑如何制作 segment_ids
那么我该如何计算呢? 谢谢!!
------------更新
我在论文中讲的部分是图3
fc输出为P2c-1和P2c,表示图像中class c出现或不出现的可能性
c=1,2,3...class
转置不贵吗?有时我看到这个,例如the comment ,也许我误解了这个?
tf.transpose
的 tensorflow 文档声明与 numpy tensorflow returns 不同的是一个新的张量 -> 内存。
假设 X
是你的张量 R x C
:
_, C = X.get_shape()
X_split = tf.split(1, C/2, X)
Y_split = [tf.nn.softmax(slice) for slice in X_split]
Y = tf.concat(1, Y_split)
C
将是列数,X_split
将是一个子张量列表,每个子张量有两列,Y_split
将为每个张量计算常规 softmax, Y
将加入softmaxes的结果。