我想用几种方法将我的行集中在一起,并得到几组居中的行。
我的数据形状为(4, 3)
,即四个3D矢量:
data = tf.get_variable("myvar1", shape=[4, 3], dtype=tf.float64)
我有两个中心(两个3D矢量):
mu = tf.get_variable("mu", initializer=tf.constant(np.arange(2*3).reshape(2, 3), dtype=tf.float64))
我想每亩一次数据中心。在numpy我会写循环:
data = np.arange(4 * 3).reshape(4, 3)
mu = np.arange(2*3).reshape(2, 3)
centered_data = np.empty((2, 4, 3))
for i_data in range(len(data)):
for i_mu in range(len(mu)):
centered = data[i_data] - mu[i_mu]
centered_data[i_mu, i_data, :] = centered
如何在tensorflow中做同样的事情?
numpy的批量方法也将受到赞赏!
答案 0 :(得分:1)
显然我可以插入单一维度来激发广播:
mu = np.reshape(mu, (2, 1, 3))
centered_data = data - mu
同样是numpy:
.glyphicon {
position: relative;
top: 1px;
display: inline-block;
font-family: 'Glyphicons Halflings';
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
答案 1 :(得分:0)
您只需要使用-
或tf.substract
它将执行元素操作:
centered_data = tf.substract(data, mu)