我正在學習 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
提交
取消