为什么第一个密集层不是"密集"?

时间:2018-05-11 13:58:23

标签: tensorflow

我创建了一个带有输入图层和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                                                                                                                                                                        

似乎第一个隐藏层仅将每个神经元连接到单个相应的输入,而不是密集地连接到每个神经元的每个输入。这是预期的吗?这种行为记录在哪里?

1 个答案:

答案 0 :(得分:0)

这是因为dense图层的输入大小应为[batch_size, feature_size]。您的输入为[10, 1],这就是为什么权重大小为1x10。

只需对第一个密集图层的输入执行tf.transpose(input_layer)即可输入[1, 10],并且应该提供所需的大小。