我正在学习 keras 中的神经网络。我在合成数据上指定了一个简单的模型。model=tf.keras.models.Sequential()model.add(tf.keras.layers.Dense(2, input_dim=2))model.compile(optimizer='sgd', loss='mean_squared_error')我有两个属性来预测两个值。这是我初始化数据的地方:x=[]y=[]for x1 in range (6): x2=int(random.random()*10) x.append([x1,x2]) y.append([2*x1+x2**2-2, x1*x2])xs = np.array(x, dtype=float)xs=xs.reshape(6,2)ys = np.array(y, dtype=float)ys=ys.reshape(6,2)model.fit(xs, ys, epochs=500)请注意,我仅将这些数据用于学习目的。在我尝试观察模型之后。我跑model.summary()和model.get_weights()。Model: "sequential"_________________________________________________________________Layer (type) Output Shape Param # =================================================================dense (Dense) (None, 2) 6 =================================================================Total params: 6Trainable params: 6Non-trainable params: 0_________________________________________________________________Nonemodel weights [array([[0.5137405, 5.477211 ], [8.750836 , 1.6910588]], dtype=float32), array([-5.701193, -7.874653], dtype=float32)]我不明白为什么有 6 个参数和 6 个权重。根据我的理解,每个输入应该有两个,或者我应该在某个地方专门定义输出层?
2 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
您定义的模型架构如下图所示
你有一个包含两个神经元的致密层。为什么是两个神经元?因为第一个参数Dense
是units
表示神经元的数量。每个神经元对 进行线性运算X.W + b
,然后对其应用激活函数。神经元中的可学习参数是W
和b
。
由于的大小X
为 2(2 个特征),因此大小为W
(=2) + b
= 3。因此在这种情况下,每个神经元将具有 3 个参数,而 2 个这样的神经元将具有 6 个参数。
拉丁的传说
TA贡献1789条经验 获得超8个赞
您有一个包含两个神经元的输出层,这些神经元中的每一个都必须有两个权重(因为输入是 2 维的)和另一个称为“偏差”的权重。所以每个神经元有 3 个权重。
总之,您有 2 个神经元,每个神经元有 3 个权重或可训练参数,因此您的网络中总共有 6 个可训练参数。
添加回答
举报
0/150
提交
取消