【问题标题】:TensorFlow: how to batch mut-mul a batch tensor by a weight variable?TensorFlow:如何通过权重变量批量 mut-mul 批量张量?
【发布时间】:2016-04-26 16:35:38
【问题描述】:

我有以下批次形状:

 [?,227,227]

还有以下权重变量:

 weight_tensor = tf.truncated_normal([227,227],**{'stddev':0.1,'mean':0.0})

 weight_var = tf.Variable(weight_tensor)

但是当我这样做时tf.batch_matmul:

 matrix = tf.batch_matmul(prev_net_2d,weight_var)

我因以下错误而失败:

ValueError:形状 (?,) 和 () 必须具有相同的等级


所以我的问题变成了:我该怎么做?

如何在 2D 中将 weight_variable 与每张图片 (227x227) 相乘,从而得到 (227x227) 输出?此操作的平面版本完全耗尽了资源...加上梯度不会在平面形式中正确更改权重...


或者:我如何沿批处理维度 (?,) 拆分传入的张量,以便我可以使用我的 weight_variable 在每个拆分张量上运行 tf.matmul 函数?

【问题讨论】:

  • 找到解决方案了吗?
  • 我也需要解决这个问题..愿意分享吗?
  • @User104 我可能已经想通了。本周末打算调出我的旧代码......但我现在还没有最迷茫。

标签: python tensorflow


【解决方案1】:

您可以沿第一个维度平铺权重

weight_tensor = tf.truncated_normal([227,227],**{'stddev':0.1,'mean':0.0})
weight_var = tf.Variable(weight_tensor)
weight_var_batch = tf.tile(tf.expand_dims(weight_var, axis=0), [batch_size, 1, 1])
matrix = tf.matmul(prev_net_2d,weight_var_batch)

虽然 batch_matmul 已经不存在了

【讨论】:

  • 最好解释一下对 tf.expand_dims 和 tf.tile 的调用。无论如何感谢您的回答,+1 :)
猜你喜欢
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2020-10-14
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
相关资源
最近更新 更多