我正在學習 keras 中的神經(jīng)網(wǎng)絡。我在合成數(shù)據(jù)上指定了一個簡單的模型。model=tf.keras.models.Sequential()model.add(tf.keras.layers.Dense(2, input_dim=2))model.compile(optimizer='sgd', loss='mean_squared_error')我有兩個屬性來預測兩個值。這是我初始化數(shù)據(jù)的地方: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)請注意,我僅將這些數(shù)據(jù)用于學習目的。在我嘗試觀察模型之后。我跑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 個參數(shù)和 6 個權重。根據(jù)我的理解,每個輸入應該有兩個,或者我應該在某個地方專門定義輸出層?
2 回答

慕尼黑8549860
TA貢獻1818條經(jīng)驗 獲得超11個贊
您定義的模型架構如下圖所示
你有一個包含兩個神經(jīng)元的致密層。為什么是兩個神經(jīng)元?因為第一個參數(shù)Dense
是units
表示神經(jīng)元的數(shù)量。每個神經(jīng)元對 進行線性運算X.W + b
,然后對其應用激活函數(shù)。神經(jīng)元中的可學習參數(shù)是W
和b
。
由于的大小X
為 2(2 個特征),因此大小為W
(=2) + b
= 3。因此在這種情況下,每個神經(jīng)元將具有 3 個參數(shù),而 2 個這樣的神經(jīng)元將具有 6 個參數(shù)。

拉丁的傳說
TA貢獻1789條經(jīng)驗 獲得超8個贊
您有一個包含兩個神經(jīng)元的輸出層,這些神經(jīng)元中的每一個都必須有兩個權重(因為輸入是 2 維的)和另一個稱為“偏差”的權重。所以每個神經(jīng)元有 3 個權重。
總之,您有 2 個神經(jīng)元,每個神經(jīng)元有 3 個權重或可訓練參數(shù),因此您的網(wǎng)絡中總共有 6 個可訓練參數(shù)。
添加回答
舉報
0/150
提交
取消