我创建了一个带有输入图层和2个密集隐藏图层的简单拓扑。每个隐藏层有10个输入和10个神经元。
我原本期望每个隐藏层都有10x10个权重/突触,但似乎第一个隐藏层只有1x10个权重:
features = {"test_input" : tensorflow.range(10)}
feature_columns = [tensorflow.feature_column.numeric_column("test_input")]
input_layer = tensorflow.feature_column.input_layer(
features=features,
feature_columns=feature_columns)
hidden_layer_1 = tensorflow.layers.dense(
input_layer,
units=10,
activation=tensorflow.nn.relu,
name="hidden_layer_1")
hidden_layer_2 = tensorflow.layers.dense(
hidden_layer_1,
units=10,
activation=tensorflow.nn.relu,
name="hidden_layer_2")
vars = tensorflow.trainable_variables()
print vars
似乎第一个隐藏层仅将每个神经元连接到单个相应的输入,而不是密集地连接到每个神经元的每个输入。这是预期的吗?这种行为记录在哪里?
答案 0 :(得分:0)
这是因为dense
图层的输入大小应为[batch_size, feature_size]
。您的输入为[10, 1]
,这就是为什么权重大小为1x10。
只需对第一个密集图层的输入执行tf.transpose(input_layer)
即可输入[1, 10]
,并且应该提供所需的大小。