簡體   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