gpt4 book ai didi

python - 如何控制 tensorflow 中的维度广播?

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:13 25 4
gpt4 key购买 nike

我想用几种方法使我的行集居中,并获得几组居中的行。

我的数据具有 (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

关于python - 如何控制 tensorflow 中的维度广播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46529273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com