如何理解Keras中简单中性网络Python代码的稠密层参数
我是Keras的新手,正在努力理解它如何理解Keras中简单中性网络Python代码的稠密层参数,python,keras,Python,Keras,我是Keras的新手,正在努力理解它 model.add(稠密(32,input\u dim=X.shape[1])32表示每个训练实例有32个输入变量,其维度由input\u dim给出。但是在输入X向量中 import numpy as np from keras.models import Sequential from keras.layers.core import Dense, Activation # X has shape (num_rows, num_
model.add(稠密(32,input\u dim=X.shape[1])
32表示每个训练实例有32个输入变量,其维度由input\u dim
给出。但是在输入X向量中
import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense, Activation
# X has shape (num_rows, num_cols), where the training data are stored
# as row vectors
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=np.float32)
# y must have an output vector for each input vector
y = np.array([[0], [0], [0], [1]], dtype=np.float32)
# Create the Sequential model
model = Sequential()
# 1st Layer - Add an input layer of 32 nodes with the same input shape as
# the training samples in X
model.add(Dense(32, input_dim=X.shape[1]))
# Add a softmax activation layer
model.add(Activation('softmax'))
# 2nd Layer - Add a fully connected output layer
model.add(Dense(1))
# Add a sigmoid activation layer
model.add(Activation('sigmoid'))
共有4个培训实例。看起来每个示例只有两个输入变量。那么,这与致密层定义中的“32”是如何对应的呢?这个网络看起来怎么样?如果您尝试
array([[0., 0.],
[0., 1.],
[1., 0.],
[1., 1.]], dtype=float32)
你将得到最后一个问题的答案
model.summary()
网络输入为2个节点(变量),与密集_1层(32个节点)相连。总共32*2个权重+32个偏差为您提供96个参数。希望这有帮助。跟随本杰明的答案。以下是一个例子:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 32) 96
_________________________________________________________________
activation_1 (Activation) (None, 32) 0
_________________________________________________________________
dense_2 (Dense) (None, 1) 33
_________________________________________________________________
activation_2 (Activation) (None, 1) 0
=================================================================
Total params: 129
Trainable params: 129
Non-trainable params: 0
_________________________________________________________________
要计算每个层的参数数,请执行以下操作:
输入大小=(1,)一个输入
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
Input (Dense) (None, 16) 32
_________________________________________________________________
Hidden_1 (Dense) (None, 16) 272
_________________________________________________________________
Output (Dense) (None, 1) 17
=================================================================
Total params: 321
Trainable params: 321
Non-trainable params: 0
_________________________________________________________________
因此,在Keras中,“第一”层是第一个隐藏层(32个节点),而不是输入层(2个节点)。通常在谈到第一层时,它指的是输入层。是吗?是的,第一层只是没有参数的输入层,正如您在model.summary()中看到的那样。这也有助于“添加一个由32个节点组成的输入层,其输入形状与” 因此,由于“输入层”的使用,该注释具有误导性。
Input layer number of parameters = 16 weights * 1(input) + 16 biases = 32
Hidden layer number of parameters = 16 weights * 16(hidden neurons) + 16 biases = 272
Output layer number of parameters = 16 weights * 1(output neuron) + 1 bias = 17