tensorflow [功能请求]取消挤压unsorted_segment_x

bvjxkvbb  于 2022-10-29  发布在  其他
关注(0)|答案(7)|浏览(170)

我是否编写了自定义代码?否
操作系统平台与分发?Win10
从管道安装TensorFlow
TensorFlow版本?1.7
Bazel版本?不适用
CUDA/cuDNN版本?不适用
GPU型号和内存?不适用
要重现的确切命令:未排序段总和

描述问题

假设您有3个包含12个值的序列(shape(3,12))和5个段,并且输入的shape(None,12,3)转置为(3,12,None)
使用任何带有unsorted_segement_x的函数,输出都将是(5,None)。
有没有可能有一个函数做同样的事情,但仍然保持第一维度。
相当于:

input.shape==(None,12,3)
segment.shape==(3,12)

outputs=[]
for ix, val in enumerate(tf.unstack(input)):
    ouputs.append(tf.unsorted_segment_sum(val,sequence[ix],5)
output=tf.stack(outputs)
output.shape==(3,5,None)

这种方法的用途是迭代加权输入,而不必循环数据或使用整形。不将上级维度的所有序列连接在一起,并使用类似于reduce_sum的“keep_dims”来触发该行为。

ogq8wdun

ogq8wdun1#

感谢您的发帖。我们注意到您尚未填写问题模板中的以下字段。如果这些字段与您的案例相关,您是否可以更新它们,或者将它们保留为N/A?谢谢。
我是否编写了自定义代码
操作系统平台和分发
TensorFlow安装自
TensorFlow版本
Bazel版本
CUDA/cuDNN版本
GPU型号和内存
要重现的确切命令

h5qlskok

h5qlskok2#

我是否编写了自定义代码?否
操作系统平台与分发?Win10
从管道安装TensorFlow
TensorFlow版本?1.7
Bazel版本?不适用
CUDA/cuDNN版本?不适用
GPU型号和内存?不适用
要重现的确切命令:未排序段总和
(bot的重复信息)

fcipmucu

fcipmucu3#

我也想使用相同的功能!奇怪的是segment_ops没有keep_dims参数。

krugob8w

krugob8w4#

@zhaoxin19有一些解决方法,一个好主意是开始一个新的线程,因为@rmlarsen似乎已经死亡。如果你在赶时间,需要一些解决方法,我可以帮助。

rqmkfv5c

rqmkfv5c5#

@皇家0045,非常感谢你的帮助。我正在做深入的模型研究,想在我的新模型中添加这种操作。很明显,我已经找到了unsorted_segment_sum的实现。但是它和我想要的有点不同。我认为在这个操作中添加一个keep_dims参数是一个好主意。我不擅长在tensorflow 中添加或更改新操作。如果有人能帮忙,我将非常感激。

c3frrgcw

c3frrgcw6#

@roya0045你知道我们如何在tensorflow中添加这个特性吗?看起来我们只需要将tf.unsorted_segment_sum api改为tf.reduce_sum,添加一个keep_dims参数。

iklwldmw

iklwldmw7#

我确信这是可以做到的,但我不确定怎么做。我不熟悉c++和tensorflow 的代码库。
到目前为止,我找到的解决方法已在我的最新项目中实现
唯一的问题是,我还没有测试这4种方法是否会破坏反向传播(先获得权重,在随机数据上训练,之后获得权重,然后减去初始权重,看看它是否有效。)
我想测试它们,但我没有太多时间这样做,如果你愿意,你可以为每个版本设置一个带有for循环的最小网络,训练它,并比较权重,看看这些变通办法是否有效,我对结果很感兴趣。

相关问题