我正在尝试实现一个简单的计算图框架,并使用简单的神经网络对其进行测试,主要是通过TensorFlow学习。现在我想清楚TensorFlow如何处理无形状张量。
在this example中,CGColor
的形状为UIColor.blue.cgcolor
,X
的形状为[None, n_input]
,weights['h1']
的形状为[n_input, n_hidden_1]
。当它尝试执行此操作时:biases['b1']
,[n_hidden_1]
应该具有形状layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
,以及TensorFlow如何将其添加到tf.matmul(x, weights['h1'])
?基于documentation,[None, n_hidden_1]
仅在2个操作数具有相同形状时有效。如果我们使用大小为10的批处理运行,则biases['b1']
将具有tf.add
形状,并且不应与tf.matmul(x, weights['h1'])
一起添加。
答案 0 :(得分:0)
[None, n_input]
的理想含义是:None
指的是我们可以给定的Batch_size,而n_input
则是指要分析的特征数量。
因此n_input
表示784个像素数据。因此,我们将实际尝试做X.W+b
的意思是X
([None, 784]
)乘以[784, 256]
,模型输出[None, 256]
,现在增加了偏差,这里+也称为广播+,理想情况下,它会为256个隐藏的单元格增加256个偏差