当前位置:  开发笔记 > 人工智能 > 正文

TensorFlow中的有效方法减去每行的标准deivation的均值和除法

如何解决《TensorFlow中的有效方法减去每行的标准deivation的均值和除法》经验,为你挑选了2个好方法。

我有一个形状的张量,[x, y]我想减去平均值并除以行标准差(即我想为每一行做).在TensorFlow中执行此操作的最有效方法是什么?

当然我可以循环遍历行,如下所示:

new_tensor = [i - tf.reduce_mean(i) for i in old_tensor]

...减去均值,然后做类似的事情找到标准差并除以它,但这是在TensorFlow中做到这一点的最佳方法吗?



1> gizzmole..:

    沿轴1计算力矩(在你的情况下为y)并保持尺寸,即均值和var的形状是(len(x),1)

    减去平均值并除以标准差(即方差的平方根)

mean, var = tf.nn.moments(old_tensor, [1], keep_dims=True)
new_tensor = tf.div(tf.subtract(old_tensor, mean), tf.sqrt(var))



2> mrry..:

TensorFlow tf.sub()tf.div()运算符支持广播,因此您无需遍历每一行.让我们考虑均值,并将标准偏差作为练习:

old_tensor = ...                                          # shape = (x, y)
mean = tf.reduce_mean(old_tensor, 1, keep_dims=True)      # shape = (x, 1)                    

stdev = ...                                               # shape = (x,)
stdev = tf.expand_dims(stdev, 1)                          # shape = (x, 1)

new_tensor = old_tensor - mean                            # shape = (x, y)
new_tensor = old_tensor / stdev                           # shape = (x, y)

减法和除法运算符隐式地(x, 1)沿列维度广播一个形状的张量,以匹配另一个参数的形状,(x, y).有关广播如何工作的更多详细信息,请参阅有关该主题的NumPy文档(TensorFlow实现NumPy广播语义).

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有