为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在简单的 2 输出 2 输入网络中,我在 Keras 中得到 6 个参数?

为什么在简单的 2 输出 2 输入网络中,我在 Keras 中得到 6 个参数?

素胚勾勒不出你 2023-03-08 14:36:46
我正在学习 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个赞

您定义的模型架构如下图所示

//img1.sycdn.imooc.com//64082d1b0001264604400357.jpg

你有一个包含两个神经元的致密层。为什么是两个神经元?因为第一个参数Denseunits表示神经元的数量。每个神经元对 进行线性运算X.W + b,然后对其应用激活函数。神经元中的可学习参数是Wb

由于的大小X为 2(2 个特征),因此大小为W(=2) + b= 3。因此在这种情况下,每个神经元将具有 3 个参数,而 2 个这样的神经元将具有 6 个参数。


查看完整回答
反对 回复 2023-03-08
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

您有一个包含两个神经元的输出层,这些神经元中的每一个都必须有两个权重(因为输入是 2 维的)和另一个称为“偏差”的权重。所以每个神经元有 3 个权重。

总之,您有 2 个神经元,每个神经元有 3 个权重或可训练参数,因此您的网络中总共有 6 个可训练参数。


查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信