繁体   English   中英

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

[英]Why do I get 6 parameters in Keras in simple 2 output 2 input network?

我正在学习 keras 中的神经网络。 我在组合数据上指定了一个简单的 model。

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 之后。 我运行model.summary()model.get_weights()

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 2)                 6         
=================================================================
Total params: 6
Trainable params: 6
Non-trainable params: 0
_________________________________________________________________
None
model weights  [array([[0.5137405, 5.477211 ],
       [8.750836 , 1.6910588]], dtype=float32), array([-5.701193, -7.874653], dtype=float32)]

我不明白为什么有 6 个参数和 6 个权重。 据我了解,每个输入应该有两个,或者我应该在某个地方专门定义 output 层?

您定义的 model 架构如下图所示

在此处输入图像描述

你有一个带有两个神经元的密集层。 为什么是两个神经元? 因为Dense的第一个参数是表示神经元数量的units 每个神经元进行XW + b的线性运算,然后对其应用激活 function。 a 神经元中的可学习参数是Wb

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

您有一个带有两个神经元的 output 层,每个神经元必须有两个权重(因为输入的维度为 2)和另一个称为“偏差”的权重。 所以每个神经元有 3 个权重。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM