我想用几种方法使我的行集居中,并获得几组居中的行。
我的数据具有 (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 的批量方法也将不胜感激!
请您参考如下方法:
显然我可以插入奇异维度来激发广播:
data = tf.get_variable("myvar1", shape=[4, 3], dtype=tf.float64)
mu = tf.get_variable("mu", initializer=tf.constant(np.arange(2*3).reshape(2, 3), dtype=tf.float64))
centered_data = data - tf.expand_dims(mu, axis=1)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
ans_value, centered_data_value, mu_value = sess.run([centered_data, data, mu], {data: np.arange(4 * 3).reshape(4, 3)})
print("centered_data_value: ", centered_data_value)
print("mu: ", mu_value)
print("ans: ", ans_value)
在numpy中也是如此:
mu = np.reshape(mu, (2, 1, 3))
centered_data = data - mu
