TensorFlow:如何通过权重变量批处理批量张量?

don*_*lan 6 python tensorflow

我有以下批量形状:

 [?,227,227]
Run Code Online (Sandbox Code Playgroud)

以下权重变量:

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

 weight_var = tf.Variable(weight_tensor)
Run Code Online (Sandbox Code Playgroud)

但当我这样做时tf.batch_matmul:

 matrix = tf.batch_matmul(prev_net_2d,weight_var)
Run Code Online (Sandbox Code Playgroud)

我失败了,出现以下错误:

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


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

我如何在2D中获得一个乘以每个单独图片(227x227)的weight_variable,以便我有一个(227x227)输出?这个操作的扁平版本完全耗尽了资源...加上渐变不会在平面形状中正确改变重量......


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

ark*_*khy 5

您可以沿第一维平铺权重

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)
Run Code Online (Sandbox Code Playgroud)

虽然 batch_matmul 不存在了