目录
一、什么是前馈神经网络?
二、数学表达式是什么?
三、为什么需要“非线性函数”?
四、NumPy 实现前馈神经网络代码示例
五、 运行结果
六、代码解析
6.1 初始化部分
6.2 前向传播
6.3 计算损失(Loss)
6.4 反向传播(手动)
6.5 更新参数(梯度下降)
6.6 循环训练
七、训练过程可视化(思维图)
八、关键问题答疑
Q1:为什么需要隐藏层?
Q2:ReLU 是干嘛的?
Q3:学习率怎么选?
九、总结
学习建议
在机器学习中,神经网络就像一个“会学习的函数”,而前馈神经网络(Feedforward Neural Network)则是最基础、最核心的一种结构。本文将带你从结构原理、数学公式、实现细节一步步理解“单隐藏层”的前馈网络。
一、什么是前馈神经网络?
前馈神经网络的特点是:
信息单向流动,从输入层 → 隐藏层 → 输出层,没有循环或反馈连接。
最简单的一种结构如下图所示:
输入层 隐藏层(ReLU) 输出层
x(输入) ──► w1 ──► ReLU ──► w2 ──► y_pred(预测)
你可以把它理解成一个两步变换:
-
线性变换 1:
x → w1
-
非线性激活:ReLU
-
线性变换 2:隐藏层输出 →
w2
→ 预测值
二、数学表达式是什么?
假设:
-
输入特征维度是
dim_in
-
隐藏层维度是
hidden_dim
-
输出维度是
dim_out
我们定义:
-
输入数据:
x ∈ ℝ^(batch_size × dim_in)
-
权重矩阵:
-
w1 ∈ ℝ^(dim_in × hidden_dim)
-
w2 ∈ ℝ^(hidden_dim × dim_out)
-
前向传播公式:
h = x @ w1 # 第一步:线性变换
h_relu = ReLU(h) # 第二步:非线性激活
y_pred = h_relu @ w2 # 第三步:输出层线性变换
其中:
ReLU(z) = max(0, z)
即负数变为0,正数保留。
三、为什么需要“非线性函数”?
如果没有 ReLU,两个线性变换其实可以合并成一个矩阵乘法:
x @ w1 @ w2 = x @ w3 # 等效于一个线性变换
这样网络就失去了非线性建模能力。ReLU 等激活函数的存在,是神经网络能“拟合复杂函数”的关键!
四、NumPy 实现前馈神经网络代码示例
import numpy as np# batch size是批量大小;dim_in是输入大小
# hidden_layer是隐层的大小;dim_out是输出大小batch_size = 60
dim_in = 1000
hidden_layer = 100
dim_out = 10# 随机产生输入与输出
x = np.random.randn(batch_size, dim_in)
y = np.random.randn(batch_size, dim_out)# 随机初始化参数
w1 = np.random.randn(dim_in, hidden_layer)
w2 = np.random.randn(hidden_layer, dim_out)learning_rate = 1e-6 #学习率:e-6 = 0.000001 是一个非常小的学习率
for t in range(500):# 前向计算yh = x.dot(w1)h_relu = np.maximum(h, 0)y_pred = h_relu.dot(w2)# 计算lossloss = np.square(y_pred - y).sum()print(t, loss)# 反向计算梯度grad_y_pred = 2.0 * (y_pred - y)grad_w2 = h_relu.T.dot(grad_y_pred)grad_h_relu = grad_y_pred.dot(w2.T)grad_h = grad_h_relu.copy()grad_h[h < 0] = 0grad_w1 = x.T.dot(grad_h)# 更新参数w1 -= learning_rate * grad_w1w2 -= learning_rate * grad_w2
五、 运行结果
0 31802913.59711115
1 27862669.940934084
2 25041416.34665305
3 20640849.588396948
4 15087301.103141088
5 9844669.593496926
6 6049742.674245879
7 3699122.960253565
8 2368085.6044881023
9 1621768.9999920807
10 1188992.819770149
11 920447.5235605075
12 740807.1376283981
13 612145.3188978288
14 514705.5694336676
15 437800.75185547443
16 375550.4994679776
17 324226.0013918109
18 281414.5595043778
19 245350.51283714588
20 214781.66049475834
21 188693.01738335588
22 166331.02382850024
23 147057.66813775746
24 130372.0760115491
25 115874.92937036144
26 103236.34580226504
27 92188.65212177529
28 82497.74591004035
29 73972.29116012575
30 66453.88210675835
31 59807.95565152481
32 53922.74009309074
33 48696.468874729
34 44043.78842847229
35 39897.40938714743
36 36192.72952379745
37 32881.222911419376
38 29912.920804400706
39 27246.050159921753
40 24844.118152219373
41 22679.159706167917
42 20725.118857534137
43 18959.35709327193
44 17361.09639462803
45 15912.21380914335
46 14597.397472164323
47 13403.287174699626
48 12317.120715892159
49 11327.963654371699
50 10426.545234414367
51 9604.127200974479
52 8853.158791478138
53 8168.93280440142
54 7542.6608044879895
55 6968.996588383261
56 6443.037310604382
57 5960.506414401112
58 5517.4320262423425
59 5110.1600773415785
60 4735.513365426887
61 4390.702785605697
62 4073.2990153810606
63 3780.928637073434
64 3511.1590500742914
65 3262.262949969219
66 3032.384186569493
67 2819.991821524453
68 2623.632186407818
69 2441.9646580452236
70 2273.775854509076
71 2118.0034594937424
72 1973.665619169338
73 1839.8562544909523
74 1715.7182837748542
75 1600.5126668971034
76 1493.5527644299332
77 1394.2122471150428
78 1301.9394631174582
79 1216.335314311364
80 1136.7398485528051
81 1062.6204385473764
82 993.612450734805
83 929.362697529916
84 869.5064558211744
85 813.731637857344
86 761.7341206626454
87 713.2633382804415
88 668.0362485681171
89 625.8170105180482
90 586.4092654486831
91 549.605831661645
92 515.231047199808
93 483.1152413009638
94 453.10580613925544
95 425.0462974237418
96 398.8007080906175
97 374.2590703332922
98 351.2954947955823
99 329.80033956825855
100 309.68024900783837
101 290.8443899089443
102 273.19851756881746
103 256.6691636122595
104 241.18290361059178
105 226.6691663487253
106 213.0629310407298
107 200.30609484238812
108 188.3477701204942
109 177.125789090684
110 166.59808757657473
111 156.7191850562956
112 147.44614999869572
113 138.74131169950806
114 130.56986742407457
115 122.89772025993098
116 115.68910445368162
117 108.91918973749847
118 102.56047471033048
119 96.5831941807449
120 90.967035462952
121 85.68717817216626
122 80.7234420313078
123 76.05481952242808
124 71.66620153538615
125 67.53758167141103
126 63.65318898584177
127 59.999076378378334
128 56.56086183675922
129 53.32567418293749
130 50.28033726167378
131 47.41310908182531
132 44.70448321783478
133 42.15592621331682
134 39.75630908289999
135 37.496991338871815
136 35.36963033838846
137 33.366187599643325
138 31.479308818008846
139 29.70193936918237
140 28.027230859478365
141 26.44968186655459
142 24.963046042136426
143 23.562321730319045
144 22.241830951778866
145 20.996926430338434
146 19.823452002432568
147 18.717422228633854
148 17.67435813163915
149 16.690503204898853
150 15.76287985981186
151 14.887751449814015
152 14.062146355015631
153 13.283400194595085
154 12.548734711782961
155 11.855512164131758
156 11.201378439359555
157 10.584214540042273
158 10.001536944302227
159 9.451672893522225
160 8.932572592099003
161 8.442495850015938
162 7.979816946387869
163 7.5432524944169135
164 7.13091488538908
165 6.741437779001373
166 6.373682019776972
167 6.02633674757954
168 5.6981891638471485
169 5.388291721021924
170 5.095533368405709
171 4.818953241516447
172 4.557671920079116
173 4.310731156609181
174 4.077415972644754
175 3.8569519089727935
176 3.6486160999536157
177 3.4517155427683224
178 3.2656253398948505
179 3.089724111450937
180 2.9234344916002044
181 2.7662840969546325
182 2.6177031596891975
183 2.4772138748637946
184 2.3443674358368587
185 2.2187273280204627
186 2.0999512612521642
187 1.9876065329842025
188 1.8813550412857811
189 1.7809058053391327
190 1.6858737156368528
191 1.5959946327097854
192 1.5109725009413622
193 1.4305263016087912
194 1.3544294434067439
195 1.282451021725154
196 1.2143381087541516
197 1.1498918006151821
198 1.0889042447693447
199 1.0312009559405393
200 0.9766016358261971
201 0.9249599529392429
202 0.8760595568485051
203 0.8297721716028166
204 0.7859628943282888
205 0.7444943145777809
206 0.7052344892484222
207 0.6680832299658699
208 0.6329090217550289
209 0.5996021728664945
210 0.5680733020111599
211 0.5382190537440837
212 0.5099529880569806
213 0.48319963912815755
214 0.45785685017641214
215 0.43385896160687876
216 0.4111386240605488
217 0.3896181736878225
218 0.36923750319531146
219 0.34993519676861856
220 0.33165095707346187
221 0.314331294513814
222 0.2979289006429905
223 0.282398983029271
224 0.26768078121806854
225 0.25373798570032857
226 0.24052652880908543
227 0.22801208505468928
228 0.21615535383593443
229 0.20492378480272846
230 0.19428135659342516
231 0.18419405471680889
232 0.1746366238405904
233 0.16557937294857505
234 0.15699720057847372
235 0.14886621818196866
236 0.1411585604746986
237 0.13385390788271168
238 0.12693024876027403
239 0.12036883334445284
240 0.11415069420913446
241 0.10825794261161627
242 0.10267061968478475
243 0.09737390311441976
244 0.09235312837862564
245 0.087593740090925
246 0.0830823943436006
247 0.07880633544704217
248 0.07475172844129639
249 0.07090645829025279
250 0.06726127607186388
251 0.0638052354066526
252 0.06052801383907144
253 0.05742046861889627
254 0.05447513273019535
255 0.05168078573727829
256 0.04903164242414225
257 0.046518857040723
258 0.04413593768432386
259 0.04187597805508968
260 0.03973280482497978
261 0.037700580339928444
262 0.03577274145343304
263 0.033944260459066664
264 0.03221002883490959
265 0.030565103572368503
266 0.029005450152877622
267 0.027525690273484005
268 0.02612171439511704
269 0.024789845790938778
270 0.02352644209817506
271 0.022328112777489896
272 0.02119109957536843
273 0.02011250820948681
274 0.01908972546251681
275 0.01811878755436474
276 0.017197668026636498
277 0.016323580155296946
278 0.015494275307769744
279 0.014707626865057324
280 0.013961146888082815
281 0.013252658795015478
282 0.012580376850963828
283 0.011942380970353389
284 0.011337050786504082
285 0.010762615331565674
286 0.010217442620419497
287 0.009700048476176
288 0.009209015005295619
289 0.008743063914064007
290 0.00830079789562362
291 0.007881090049369877
292 0.007482863310689919
293 0.007104741067817669
294 0.006745881310106875
295 0.0064052229280060005
296 0.006081882464660905
297 0.00577494150311747
298 0.005483632015744061
299 0.0052070843473717
300 0.004944555914305707
301 0.004695350946217612
302 0.0044587868925615535
303 0.004234357250900503
304 0.004021170428828347
305 0.003818841664008364
306 0.003626677064852193
307 0.003444252145867361
308 0.0032710320315975693
309 0.003106565476324248
310 0.0029504249995014166
311 0.0028021967964894498
312 0.002661432790110562
313 0.0025277830326929803
314 0.002400875685370796
315 0.002280390780283942
316 0.0021659815437142424
317 0.002057352231068933
318 0.0019542125112607094
319 0.0018562506796565845
320 0.0017632234210104608
321 0.0016748767260031281
322 0.001590977878105458
323 0.001511308978229976
324 0.0014356487962760454
325 0.00136379373551704
326 0.0012955499976566886
327 0.0012307467283780987
328 0.0011691981995367463
329 0.0011107368584169276
330 0.0010552330564509874
331 0.0010025121063436781
332 0.0009524258692544249
333 0.0009048535091540999
334 0.0008597005446571409
335 0.0008167850160683086
336 0.0007760177549937489
337 0.0007372932962456634
338 0.0007005107649490502
339 0.000665576369659209
340 0.0006323891450099216
341 0.000600862492346459
342 0.0005709151467133703
343 0.0005424812175655973
344 0.0005154574422725749
345 0.0004897829025717045
346 0.00046539467401643945
347 0.0004422268054683758
348 0.0004202159139724301
349 0.0003993049959073562
350 0.0003794397872115326
351 0.0003605669705357083
352 0.0003426361366397225
353 0.0003256007160947051
354 0.0003094172208779314
355 0.0002940421756585992
356 0.00027943617403704686
357 0.00026555486739258255
358 0.00025236665992773265
359 0.00023983454825590847
360 0.00022792730770783559
361 0.00021661437081645806
362 0.00020586513100568558
363 0.00019565035974674806
364 0.00018594471270624293
365 0.000176723445208882
366 0.00016795994430273203
367 0.00015963337782530846
368 0.0001517275539276351
369 0.00014421040985711602
370 0.00013706455819106474
371 0.0001302743106607912
372 0.00012382226779548573
373 0.0001176900338359785
374 0.00011186270067889316
375 0.00010632526261202345
376 0.00010106289697884404
377 9.606168208348533e-05
378 9.130866667679243e-05
379 8.679234336241218e-05
380 8.249999456550884e-05
381 7.842067674092583e-05
382 7.45443419110057e-05
383 7.085920960332567e-05
384 6.735685124501332e-05
385 6.402830734412548e-05
386 6.086479698207039e-05
387 5.7857925365965886e-05
388 5.500000388889879e-05
389 5.2284174037321924e-05
390 4.9702453540481626e-05
391 4.7248663640145366e-05
392 4.4916904149123065e-05
393 4.2700116382073766e-05
394 4.059346916060993e-05
395 3.859090935382623e-05
396 3.6687282106802257e-05
397 3.487771412116357e-05
398 3.3157737731131725e-05
399 3.152288996584813e-05
400 2.996875794549964e-05
401 2.8491465927160866e-05
402 2.7087532687666482e-05
403 2.575352597790541e-05
404 2.448471086445722e-05
405 2.3278645685332488e-05
406 2.2132031728684212e-05
407 2.10423442694837e-05
408 2.0006229536901454e-05
409 1.9021204669995866e-05
410 1.8084776047297077e-05
411 1.719465920098826e-05
412 1.6348422880929777e-05
413 1.5543915880875718e-05
414 1.4779130685608716e-05
415 1.4052109899892033e-05
416 1.336097414947876e-05
417 1.2703878208505998e-05
418 1.2079175773983917e-05
419 1.1485267270950844e-05
420 1.0920807908278039e-05
421 1.0383995733575947e-05
422 9.873608285972606e-06
423 9.388381552669514e-06
424 8.927092497434697e-06
425 8.488473546786367e-06
426 8.071471838416779e-06
427 7.675027328261622e-06
428 7.2981227833149334e-06
429 6.939736801339232e-06
430 6.599003440153725e-06
431 6.2750170691319805e-06
432 5.967007078748734e-06
433 5.6742090296503115e-06
434 5.395719752970813e-06
435 5.130937645253952e-06
436 4.87920158901866e-06
437 4.639815906406285e-06
438 4.412213573149531e-06
439 4.195802711971161e-06
440 3.990123950961278e-06
441 3.7945252328289855e-06
442 3.608471977769138e-06
443 3.4315515007454395e-06
444 3.2633306394668312e-06
445 3.103405459620941e-06
446 2.9513181726355295e-06
447 2.8066876022389856e-06
448 2.6691538259105404e-06
449 2.5383753494089284e-06
450 2.4140235252178024e-06
451 2.2957701135496723e-06
452 2.183333776488385e-06
453 2.07641109961365e-06
454 1.974724731070076e-06
455 1.8780278346758207e-06
456 1.786082848996655e-06
457 1.698639821470484e-06
458 1.6155178969931476e-06
459 1.5364439298679826e-06
460 1.4612462682268666e-06
461 1.3897382233661123e-06
462 1.3217350417736695e-06
463 1.2570680137975212e-06
464 1.195578286864945e-06
465 1.1370905886940199e-06
466 1.0814704022876013e-06
467 1.0285784650087478e-06
468 9.7827440574436e-07
469 9.304371896482364e-07
470 8.849516701658213e-07
471 8.416914919557603e-07
472 8.005446696067948e-07
473 7.614111160484979e-07
474 7.241936240771875e-07
475 6.888036578125152e-07
476 6.551438266808347e-07
477 6.231298681746073e-07
478 5.926835268639461e-07
479 5.637450957389969e-07
480 5.362068835505084e-07
481 5.100125712310269e-07
482 4.851009928096027e-07
483 4.6141620299303607e-07
484 4.3888189005498683e-07
485 4.174501142456302e-07
486 3.97066914639174e-07
487 3.77681684529433e-07
488 3.592442323894331e-07
489 3.4170694626234404e-07
490 3.250269793717848e-07
491 3.091632431964455e-07
492 2.9407350013526166e-07
493 2.7972264887504744e-07
494 2.660725994291934e-07
495 2.530911152051592e-07
496 2.4074548883860325e-07
497 2.2899987883379698e-07
498 2.178288956329781e-07
499 2.072046279815824e-07
六、代码解析
6.1 初始化部分
batch_size = 60 # 每次训练输入的样本数(小批量)
dim_in = 1000 # 输入特征维度
hidden_layer = 100 # 隐藏层神经元数量
dim_out = 10 # 输出维度x = np.random.randn(batch_size, dim_in) # 输入样本(模拟数据)
y = np.random.randn(batch_size, dim_out) # 目标输出(模拟标签)w1 = np.random.randn(dim_in, hidden_layer) # 输入层到隐藏层的权重
w2 = np.random.randn(hidden_layer, dim_out) # 隐藏层到输出层的权重learning_rate = 1e-6 #学习率:e-6 = 0.000001 是一个非常小的学习率
模拟一个形如:输入层 → ReLU → 输出层 的两层神经网络。
【参数选择策略】
✅
batch_size
(批大小)概念:
每次用于训练的样本数,影响模型 收敛速度、稳定性、显存占用。
常见设置:
小批量:16, 32
中等批量:64, 128
大批量:256, 512+
建议:
情况 建议 数据量小 可以用 16~64 数据量大,显卡充足 可用 128 或更大 CPU 训练 建议小一些(如 16~32) GPU 训练 尽量大一点,充分利用显存 不知道怎么选 试试 32 或 64,是比较平衡的起点
✅
dim_in
(输入维度)概念:
特征的数量。比如:
文本用 embedding 后可能是 300~768
图像如 28×28 灰度图就是 784
这里是 1000 → 模拟高维特征
建议:
这个参数 应该由实际数据决定,不要随意设置。
情况 举例 文本输入(BERT等) 通常为 768 图像28×28(如MNIST) 784 人工生成测试数据 任意(如 1000) 若仅测试网络结构 500~1000 都可以
✅
hidden_layer
(隐藏层神经元数)概念:
中间层神经元数量,影响模型表达能力与参数数量。
建议:
越多的神经元 → 模型越复杂,能拟合更复杂的模式
但会导致过拟合、计算慢
常见经验值:
输入维度 隐藏层建议范围 100~300 50~100 500~1000 100~300 大型任务(如BERT) 512, 768, 1024+ 👉 如果你是实验性质或学习,
100
是个不错的起点。
✅
dim_out
(输出维度)概念:
模型输出的维度,取决于你的任务:
任务类型 输出维度 二分类 1(或 2 softmax) 多分类 类别数 回归 目标维度 多任务/多输出 多个维度 你这里是 10,可能模拟一个 10维回归 或 10类分类任务。
建议:
如果是分类任务:
dim_out = 类别数
如果是回归任务:
dim_out = 回归目标的维度数
✅learning_rate = 1e-6
学习率就是一步迈多远,迈得太小 → 太慢;迈得太大 → 容易摔倒(发散)。
学习率太大 后果 1e-1
,1e-2
模型 loss 波动剧烈、不收敛、甚至变 NaN 学习率太小 训练速度极慢,loss下降很慢,甚至不动 比如用
1e-6
,每一步走得非常小,要走很久才能到达最优点。【常见选择范围】
任务 常用学习率 简单手写神经网络(当前代码这个) 1e-3 ~ 1e-5
深度学习框架(Adam优化器) 通常是 1e-3
起微调预训练模型(BERT等) 1e-5 ~ 1e-6
(更小)【怎么知道学习率选得合不合适?】
可以观察训练中
loss
的变化趋势:
✅ loss 稳定下降 → 学习率合适
❌ loss 不降甚至变大 → 学习率太大
❌ loss 下降太慢 → 学习率太小
6.2 前向传播
h = x.dot(w1) # 线性层1:输入 × 权重1
h_relu = np.maximum(h, 0) # ReLU 激活函数
y_pred = h_relu.dot(w2) # 线性层2:ReLU输出 × 权重2 = 模型预测
模拟神经网络从输入到输出的计算流程(前向传播)。
【整体网络结构】
这是一个两层神经网络,结构如下:
输入 x (batch_size × dim_in)↓ dot(w1) ← 权重矩阵1 (dim_in × hidden_layer) 隐藏层 h↓ ReLU 激活函数 ← 非线性激活 隐藏层激活 h_relu↓ dot(w2) ← 权重矩阵2 (hidden_layer × dim_out) 输出 y_pred
h = x.dot(w1)
说明:
x
是一个矩阵,形状是(60, 1000)
:表示60个样本,每个样本有1000维输入特征
w1
是一个权重矩阵,形状是(1000, 100)
:将每个输入映射到100维隐藏层空间
x.dot(w1)
表示矩阵乘法,结果是h
,形状是(60, 100)
,也就是:每个样本经过第一层神经元线性组合后得到100个数,代表激活前的隐藏层值
h_relu = np.maximum(h, 0)
对每个元素做 ReLU 激活(如果小于0就置为0)
说明:
这是一个 ReLU(Rectified Linear Unit)激活函数:
ReLU(x) = max(x, 0)
为什么用它?
增加非线性能力(不然两个线性层等于一个线性层)
抑制负值,保留正值
作用是:让神经网络可以拟合复杂的非线性函数
举个例子:
h = [[-3, 5], [2, -1]] np.maximum(h, 0) = [[0, 5], [2, 0]]
✅ 举个通俗的比喻:
假设你是一个学生:
x
:是你的考试成绩、作业表现、出勤情况等(输入特征)
w1
:是老师对每项指标的权重(重要性)
h = x.dot(w1)
:加权评分(但还没做非线性处理)
h_relu = max(h, 0)
:如果某项表现太差,干脆不加分(ReLU激活)
w2
:是评估最终等级的转换标准
y_pred = h_relu.dot(w2)
:最终得出你的综合评价或预测等级
6.3 计算损失(Loss)
loss = np.square(y_pred - y).sum()
使用的是 平方损失函数(L2 loss):表示预测值与真实值之间的差异。
6.4 反向传播(手动)
grad_y_pred = 2.0 * (y_pred - y) # 对y_pred求导
grad_w2 = h_relu.T.dot(grad_y_pred) # 权重w2的梯度
grad_h_relu = grad_y_pred.dot(w2.T) # 反传到ReLU前
grad_h = grad_h_relu.copy()
grad_h[h < 0] = 0 # ReLU的梯度(小于0处为0)
grad_w1 = x.T.dot(grad_h) # 权重w1的梯度
手动计算每一层的梯度,过程符合链式法则的传播逻辑。
6.5 更新参数(梯度下降)
w1 -= learning_rate * grad_w1
w2 -= learning_rate * grad_w2
使用学习率 1e-6
和 梯度下降法 来更新模型参数。
6.6 循环训练
for t in range(500):...
循环训练 500 次,每次都进行:
-
前向传播
-
计算 loss
-
反向传播
-
更新参数
七、训练过程可视化(思维图)
输入 x --> Linear(w1) --> ReLU --> Linear(w2) --> 输出 y_pred| |权重1 权重2
每一轮迭代:
-
根据当前参数前向预测
y_pred
-
计算预测误差(loss)
-
根据 loss 反向传播求梯度
-
用梯度下降法更新
w1
、w2
八、关键问题答疑
Q1:为什么需要隐藏层?
隐藏层可以帮助模型学习输入和输出之间复杂的中间表示。没有隐藏层时,模型就是个线性回归。
Q2:ReLU 是干嘛的?
ReLU 是一个非线性函数,核心公式:
ReLU(x) = max(0, x)
它能增强模型的拟合能力,防止神经网络退化为线性模型。
Q3:学习率怎么选?
学习率太大可能训练发散,太小则训练太慢。常见值:
优化器 | 建议范围 |
---|---|
SGD | 1e-3 ~ 1e-5 |
Adam | 1e-3 是常用起点 |
九、总结
前馈神经网络的训练过程可以总结为:
前向传播 + 损失计算 + 反向传播 + 参数更新
在本文中,我们以 NumPy 为例,手动实现了一个具有单隐藏层的神经网络,并用最基础的数学操作训练模型。
学习建议
-
改变隐藏层大小,观察训练效果
-
换成 sigmoid 或 tanh 激活函数试试看
-
用自己的数据跑一次(比如分类任务)