-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1447 lines (959 loc) · 196 KB
/
Copy pathindex.html
File metadata and controls
1447 lines (959 loc) · 196 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<link rel="dns-prefetch" href="https://hills-code.github.io">
<title>Hill's blog</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta property="og:type" content="website">
<meta property="og:title" content="Hill's blog">
<meta property="og:url" content="https://hills-code.github.io/index.html">
<meta property="og:site_name" content="Hill's blog">
<meta property="og:locale" content="en_US">
<meta property="article:author" content="hill">
<meta name="twitter:card" content="summary">
<link rel="alternative" href="/atom.xml" title="Hill's blog" type="application/atom+xml">
<link rel="icon" href="/assets/favicon.jpg">
<link rel="stylesheet" type="text/css" href="/./main.0cf68a.css">
<style type="text/css">
#container.show {
background: linear-gradient(200deg,#a0cfe4,#e8c37e);
}
</style>
<meta name="generator" content="Hexo 5.4.0"></head>
<body>
<div id="container" q-class="show:isCtnShow">
<canvas id="anm-canvas" class="anm-canvas"></canvas>
<div class="left-col" q-class="show:isShow">
<div class="overlay" style="background: #4d4d4d"></div>
<div class="intrude-less">
<header id="header" class="inner">
<a href="/" class="profilepic">
<img src="/assets/favicon.jpg" class="js-avatar">
</a>
<hgroup>
<h1 class="header-author"><a href="/">hill</a></h1>
</hgroup>
<nav class="header-menu">
<ul>
<li><a href="/">主页</a></li>
<li><a href="/categories">分类</a></li>
<li><a href="/archives/index.html">归档</a></li>
</ul>
</nav>
<nav class="header-smart-menu">
<a q-on="click: openSlider(e, 'innerArchive')" href="javascript:void(0)">所有文章</a>
<a q-on="click: openSlider(e, 'friends')" href="javascript:void(0)">友链</a>
<a q-on="click: openSlider(e, 'aboutme')" href="javascript:void(0)">关于我</a>
</nav>
<nav class="header-nav">
<div class="social">
<a class="qq" target="_blank" href="/assets/qq.jpg" title="qq"><i class="icon-qq"></i></a>
<a class="weixin" target="_blank" href="/assets/wechat.jpg" title="weixin"><i class="icon-weixin"></i></a>
<a class="mail" target="_blank" href="mailto:2684748198@qq.com" title="mail"><i class="icon-mail"></i></a>
</div>
<!-- 网易云音乐插件 -->
<div style="position:absolute; bottom:120px left:auto; width:85%">
<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="240" height="52" src="//music.163.com/outchain/player?type=2&id=513360721&auto=0&height=66"></iframe>
</div>
</nav>
</header>
</div>
</div>
<div class="mid-col" q-class="show:isShow,hide:isShow|isFalse">
<nav id="mobile-nav">
<div class="overlay js-overlay" style="background: #4d4d4d"></div>
<div class="btnctn js-mobile-btnctn">
<div class="slider-trigger list" q-on="click: openSlider(e)"><i class="icon icon-sort"></i></div>
</div>
<div class="intrude-less">
<header id="header" class="inner">
<div class="profilepic">
<img src="/assets/favicon.jpg" class="js-avatar">
</div>
<hgroup>
<h1 class="header-author js-header-author">hill</h1>
</hgroup>
<nav class="header-nav">
<div class="social">
<a class="qq" target="_blank" href="/assets/qq.jpg" title="qq"><i class="icon-qq"></i></a>
<a class="weixin" target="_blank" href="/assets/wechat.jpg" title="weixin"><i class="icon-weixin"></i></a>
<a class="mail" target="_blank" href="mailto:2684748198@qq.com" title="mail"><i class="icon-mail"></i></a>
</div>
</nav>
<nav class="header-menu js-header-menu">
<ul style="width: 70%">
<li style="width: 33.333333333333336%"><a href="/">主页</a></li>
<li style="width: 33.333333333333336%"><a href="/categories">分类</a></li>
<li style="width: 33.333333333333336%"><a href="/archives/index.html">归档</a></li>
</ul>
</nav>
</header>
</div>
<div class="mobile-mask" style="display:none" q-show="isShow"></div>
</nav>
<div id="wrapper" class="body-wrap">
<div class="menu-l">
<div class="canvas-wrap">
<canvas data-colors="#eaeaea" data-sectionHeight="100" data-contentId="js-content" id="myCanvas1" class="anm-canvas"></canvas>
</div>
<div id="js-content" class="content-ll">
<article id="post-数学建模之排队论" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/09/01/%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E4%B9%8B%E6%8E%92%E9%98%9F%E8%AE%BA/">数学建模之排队论</a>
</h1>
<a href="/2021/09/01/%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E4%B9%8B%E6%8E%92%E9%98%9F%E8%AE%BA/" class="archive-article-date">
<time datetime="2021-09-01T08:39:40.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-09-01</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<p>排队是在日常生活中经常遇到的现象,如顾客到商店购买物品、病人到医院看病常 常要排队。此时要求服务的数量超过服务机构(服务台、服务员等)的容量。也就是说,<strong>到达的顾客不能立即得到服务,因而出现了排队现象。</strong>这种现象不仅在个人日常生活中出现,电话局的占线问题,车站、码头等交通枢纽的车船堵塞和疏导,故障机器的停机待修,水库的存贮调节等都是有形或无形的排队现象。</p>
<p><strong>排队论</strong>(Queuing Theory)也称随机服务系统理论,就是为解决上述问题而发展 的一门学科。它研究的内容有下列三部分:</p>
<ol>
<li>性态问题,即研究各种排队系统的概率规律性,主要是研究队长分布、等待时间分布和忙期分布等,包括了瞬态和稳态两种情形。</li>
<li>优化问题,又分静态优和动态优,前者指优设计。后者指现有排队系统的优运营。</li>
<li>排队系统的统计推断,即判断一个给定的排队系统符合于哪种模型,以便根据排队理论进行分析研究。</li>
</ol>
<h1 id="1-基本概念"><a href="#1-基本概念" class="headerlink" title="1 基本概念"></a>1 基本概念</h1><h2 id="1-1-排队过程的一般表示"><a href="#1-1-排队过程的一般表示" class="headerlink" title="1.1 排队过程的一般表示"></a>1.1 排队过程的一般表示</h2><p>下图是排队论的一般模型:<br><img src="2021-09-01-16-41-41.png"><br>图中虚线所包含的部分为排队系统。各个顾客从顾客源出发,随机地来到服务机构,按一定的排队规则等待服务,直到按一定的服务规则接受完服务后离开排队系统。</p>
<p>凡要求服务的对象统称为顾客,为顾客服务的人或物称为服务员,由顾客和服务员 组成服务系统。对于一个服务系统来说,如果服务机构过小,以致不能满足要求服务的 众多顾客的需要,那么就会产生拥挤现象而使服务质量降低。 因此,顾客总希望服务机构越大越好,但是,如果服务机构过大,人力和物力方面的开支也就相应增加,从而 会造成浪费,因此研究排队模型的目的就是<strong>要在顾客需要和服务机构的规模之间进行权衡决策</strong>,使其达到合理的平衡。</p>
<h2 id="1-2-排队系统的组成和特征"><a href="#1-2-排队系统的组成和特征" class="headerlink" title="1.2 排队系统的组成和特征"></a>1.2 排队系统的组成和特征</h2><p>一般的排队过程都由输入过程、排队规则、服务过程三部分组成</p>
<h3 id="1-2-1-输入过程"><a href="#1-2-1-输入过程" class="headerlink" title="1.2.1 输入过程"></a>1.2.1 输入过程</h3><p>输入过程是指顾客到来时间的规律性,可能有下列不同情况:</p>
<ol>
<li>顾客的组成可能是有限的,也可能是无限的。</li>
<li>顾客到达的方式可能是一个—个的,也可能是成批的。</li>
<li>顾客到达可以是相互独立的,即以前的到达情况对以后的到达没有影响; 否则是相关的。</li>
<li>输入过程可以是平稳的,即相继到达的间隔时间分布及其数学期望、方差等 数字特征都与时间无关,否则是非平稳的。</li>
</ol>
<h3 id="1-2-2-排队规则"><a href="#1-2-2-排队规则" class="headerlink" title="1.2.2 排队规则"></a>1.2.2 排队规则</h3><p>排队规则指到达排队系统的顾客按怎样的规则排队等待,可分为损失制,等待制和 混合制三种.</p>
<ol>
<li>损失制(消失制)。当顾客到达时,所有的服务台均被占用,顾客随即离去。</li>
<li>等待制。当顾客到达时,所有的服务台均被占用,顾客就排队等待,直到接 受完服务才离去。例如出故障的机器排队等待维修就是这种情况。</li>
</ol>
<p>排队方式还分为单列、多列和循环队列。</p>
<h3 id="1-2-3-服务过程"><a href="#1-2-3-服务过程" class="headerlink" title="1.2.3 服务过程"></a>1.2.3 服务过程</h3><ol>
<li>服务机构。主要有以下几种类型:单服务台;多服务台并联(每个服务台同 时为不同顾客服务);多服务台串联(多服务台依次为同一顾客服务);混合型。 </li>
<li>服务规则。按为顾客服务的次序采用以下几种规则:<ul>
<li>先到先服务,这是通常的情形。</li>
<li>后到先服务,如情报系统中,后到的情报信息往往有价值,因而常被优先处理。 </li>
<li>随机服务,服务台从等待的顾客中随机地取其一进行服务,而不管到达的先后。</li>
<li>优先服务,如医疗系统对病情严重的病人给予优先治疗。</li>
</ul>
</li>
</ol>
<h2 id="1-3-排队模型的符号表示"><a href="#1-3-排队模型的符号表示" class="headerlink" title="1.3 排队模型的符号表示"></a>1.3 排队模型的符号表示</h2><p>排队模型用六个符号表示,在符号之间用斜线隔开,即 X/Y/Z/A/B/C 。第一 个符号 X 表示顾客到达流或顾客到达间隔时间的分布;第二个符号Y 表示服务时间的 分布;第三个符号Z 表示服务台数目;第四个符号 A是系统容量限制;第五个符号B 是 顾客源数目;第六个符号C 是服务规则,如先到先服务 FCFS,后到先服务 LCFS 等。并 约定,如略去后三项,即指X/Y/Z/∞/∞/FCFS的情形。我们只讨论先到先服务 FCFS 的情形,所以略去第六项。</p>
<p>表示顾客到达间隔时间和服务时间的分布的约定符号为:</p>
<ul>
<li>M —指数分布(M 是 Markov 的字头,因为指数分布具有无记忆性,即 Markov 性);</li>
<li>D—确定型(Deterministic);</li>
<li>Ek —k 阶爱尔朗(Erlang)分布;</li>
<li>G —一般(general)服务时间的分布;</li>
<li>GI —一般相互独立(General Independent)的时间间隔的分布。</li>
</ul>
<p>例如,M/M/1表示相继到达间隔时间为指数分布、服务时间为指数分布、单服务台、等待制系统。</p>
<p>D/M/c/表示确定的到达时间、服务时间为指数分布、c个平行服务台(但顾客是一队)的模型。</p>
<h2 id="1-4-排队系统的运行指标"><a href="#1-4-排队系统的运行指标" class="headerlink" title="1.4 排队系统的运行指标"></a>1.4 排队系统的运行指标</h2><p>为了研究排队系统运行的效率,估计其服务质量,确定系统的优参数,评价系统 的结构是否合理并研究其改进的措施,必须确定用以判断系统运行优劣的基本数量指标,这些数量指标通常是:</p>
<ul>
<li> 平均队长:指系统内顾客数(包括正被服务的顾客与排队等待服务的顾客)的数学期望,记作Ls 。</li>
<li>平均排队长:指系统内等待服务的顾客数的数学期望,记作 Lq 。</li>
<li>平均逗留时间:顾客在系统内逗留时间(包括排队等待的时间和接受服务的时间)的数学期望,记作Ws 。</li>
<li>平均等待时间:指一个顾客在排队系统中排队等待时间的数学期望,记作Wq 。</li>
<li>平均忙期:指服务机构连续繁忙时间(顾客到达空闲服务机构起,到服务机构再次空闲止的时间)长度的数学期望,记为 Tb</li>
</ul>
<h1 id="2-输入过程与服务时间的分布"><a href="#2-输入过程与服务时间的分布" class="headerlink" title="2 输入过程与服务时间的分布"></a>2 输入过程与服务时间的分布</h1><p>排队系统中的事件流包括顾客到达流和服务时间流。由于顾客到达的间隔时间和服 务时间不可能是负值,因此,它的分布是非负随机变量的分布。常用的分布有泊松分布、确定型分布,指数分布和爱尔朗分布。</p>
<h2 id="2-1-泊松流与指数分布"><a href="#2-1-泊松流与指数分布" class="headerlink" title="2.1 泊松流与指数分布"></a>2.1 泊松流与指数分布</h2><p><img src="2021-09-01-16-45-35.png"></p>
<h1 id="4-M-M-s等待制排队模型"><a href="#4-M-M-s等待制排队模型" class="headerlink" title="4 M/M/s等待制排队模型"></a>4 M/M/s等待制排队模型</h1><h2 id="4-1-单服务台模型"><a href="#4-1-单服务台模型" class="headerlink" title="4.1 单服务台模型"></a>4.1 单服务台模型</h2><p>单服务台等待制模型M/M/1/∞是指:顾客的相继到达时间服从参数为λ的负指数分布,服务台个数为1,服务时间V服从参数为μ的负指数分布,系统空间无限,允许无限排队,这是一类简单的排队系统。</p>
<h3 id="4-1-1-队长的分布"><a href="#4-1-1-队长的分布" class="headerlink" title="4.1.1 队长的分布"></a>4.1.1 队长的分布</h3><p><img src="2021-09-01-16-45-54.png"><br>公式(7)和(8)给出了在平衡条件下系统中顾客数为n的概率。由式(7)不难看出,ρ 是系统中至少有一个顾客的概率,也就是服务台处于忙的状态的概率,因而也称 ρ 为服务强度,它反映了系统繁忙的程度。此外,(8)式只有在ρ=λ/μ<=1的条件下才能得到,即要求顾客的平均到达率小于系统的平均服务率,才能使系统达到统计平衡.</p>
<h2 id="4-2-与排队论模型有关的-LINGO-函数"><a href="#4-2-与排队论模型有关的-LINGO-函数" class="headerlink" title="4.2 与排队论模型有关的 LINGO 函数"></a>4.2 与排队论模型有关的 LINGO 函数</h2><ul>
<li>@peb(load,S) 该函数的返回值是当到达负荷为 load,服务系统中有 S 个服务台且允许排队时系 统繁忙的概率,也就是顾客等待的概率。</li>
<li>@pel(load,S)该函数的返回值是当到达负荷为 load,服务系统中有 S 个服务台且不允许排队时系统损失概率,也就是顾客得不到服务离开的概率。 (3)@pfs(load,S,K) 该函数的返回值是当到达负荷为 load,顾客数为 K,平行服务台数量为 S 时,有限 源的 Poisson 服务系统等待或返修顾客数的期望值</li>
</ul>
<h2 id="4-3-多服务台模型(-M-M-s-∞)"><a href="#4-3-多服务台模型(-M-M-s-∞)" class="headerlink" title="4.3 多服务台模型( M/M/s/∞)"></a>4.3 多服务台模型( M/M/s/∞)</h2><p>设顾客单个到达,相继到达时间间隔服从参数为λ 的负指数分布,系统中共有s个 服务台,每个服务台的服务时间相互独立,且服从参数为 μ 的负指数分布。当顾客到达时,若有空闲的服务台则马上接受服务,否则便排成一个队列等待,等待时间为无限。<br><img src="2021-09-01-16-46-39.png"></p>
<h1 id="5-排队模型的计算机模拟"><a href="#5-排队模型的计算机模拟" class="headerlink" title="5 排队模型的计算机模拟"></a>5 排队模型的计算机模拟</h1><h2 id="5-1-确定随机变量概率分布的常用方法"><a href="#5-1-确定随机变量概率分布的常用方法" class="headerlink" title="5.1 确定随机变量概率分布的常用方法"></a>5.1 确定随机变量概率分布的常用方法</h2><p>在模拟一个带有随机因素的实际系统时,究竟用什么样的概率分布描述问题中的随 机变量,是我们总是要碰到的一个问题,下面简单介绍确定分布的常用方法:</p>
<ol>
<li>根据一般知识和经验,可以假定其概率分布的形式,如顾客到达间隔服从指数分布Exp(λ);产品需求量服从正态分布N(μ,σ22) ;订票后但未能按时前往机场登机的人数服从二项分布B(n,p) 。然后由实际数据估计分布的参数 σ,μ,λ 等,参数估计 可用极大似然估计、矩估计等方法。</li>
<li>直接由大量的实际数据作直方图,得到经验分布,再通过假设检验,拟合分布 函数,可用χ22检验等方法。</li>
<li>既缺少先验知识,又缺少数据时,对区间(a,b)内变化的随机变量,可选用Beta 分布(包括均匀分布)。先根据经验确定随机变量的均值μ和频率高时的数值(即密度函数的大值点)m ,则 Beta 分布中的参数α1,α2可由以下关系求出:<br><img src="2021-09-01-16-46-56.png"></li>
</ol>
<h2 id="5-2-计算机模拟"><a href="#5-2-计算机模拟" class="headerlink" title="5.2 计算机模拟"></a>5.2 计算机模拟</h2><p>当排队系统的到达间隔时间和服务时间的概率分布很复杂时,或不能用公式给出 时,那么就不能用解析法求解。这就需用随机模拟法求解,现举例说明。</p>
<p><strong>例1:</strong><br>设某仓库前有一卸货场,货车一般是夜间到达,白天卸货,每天只能卸货 2 车,若一天内到达数超过 2 车,那么就推迟到次日卸货。根据表 3 所示的数据,货车到 达数的概率分布(相对频率)平均为 1.5 车/天,求每天推迟卸货的平均车数。<br><img src="2021-09-01-16-47-25.png"><br>解: 这是单服务台的排队系统,可验证到达车数不服从泊松分布,服务时间也不服从指数分布(这是定长服务时间)。随机模拟法首先要求事件能按历史的概率分布规律出现。模拟时产生的随机数与事件的对应关系如表4<br><img src="2021-09-01-16-47-31.png"><br>用 a1 表示产生的随机数,a2 表示到达的车数,a3 表示需要卸货车数,a4 表 示实际卸货车数,a5 表示推迟卸货车数。编写程序如下:</p>
<figure class="highlight matlab"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line">clear </span><br><span class="line"><span class="built_in">rand</span>(<span class="string">'state'</span>,sum(<span class="number">100</span>*clock)); </span><br><span class="line">n=<span class="number">50000</span>; </span><br><span class="line">m=<span class="number">2</span> </span><br><span class="line">a1=<span class="built_in">rand</span>(n,<span class="number">1</span>); </span><br><span class="line">a2=a1; <span class="comment">%a2初始化 </span></span><br><span class="line">a2(<span class="built_in">find</span>(a1<<span class="number">0.23</span>))=<span class="number">0</span>; </span><br><span class="line">a2(<span class="built_in">find</span>(<span class="number">0.23</span><=a1&a1<<span class="number">0.53</span>))=<span class="number">1</span>; </span><br><span class="line">a2(<span class="built_in">find</span>(<span class="number">0.53</span><=a1&a1<<span class="number">0.83</span>))=<span class="number">2</span>; </span><br><span class="line">a2(<span class="built_in">find</span>(<span class="number">0.83</span><=a1&a1<<span class="number">0.93</span>),<span class="number">1</span>)=<span class="number">3</span>; </span><br><span class="line">a2(<span class="built_in">find</span>(<span class="number">0.93</span><=a1&a1<<span class="number">0.98</span>),<span class="number">1</span>)=<span class="number">4</span>; </span><br><span class="line">a2(<span class="built_in">find</span>(a1>=<span class="number">0.98</span>))=<span class="number">5</span>; </span><br><span class="line">a3=<span class="built_in">zeros</span>(n,<span class="number">1</span>);</span><br><span class="line">a4=<span class="built_in">zeros</span>(n,<span class="number">1</span>);</span><br><span class="line">a5=<span class="built_in">zeros</span>(n,<span class="number">1</span>); <span class="comment">%a2初始化 </span></span><br><span class="line">a3(<span class="number">1</span>)=a2(<span class="number">1</span>); </span><br><span class="line"><span class="keyword">if</span> a3(<span class="number">1</span>)<=m </span><br><span class="line"> a4(<span class="number">1</span>)=a3(<span class="number">1</span>);</span><br><span class="line"> a5(<span class="number">1</span>)=<span class="number">0</span>; </span><br><span class="line"><span class="keyword">else</span> </span><br><span class="line"> a4(<span class="number">1</span>)=m;</span><br><span class="line"><span class="keyword">end</span> </span><br><span class="line"><span class="keyword">for</span> <span class="built_in">i</span>=<span class="number">2</span>:n </span><br><span class="line"> a3(<span class="built_in">i</span>)=a2(<span class="built_in">i</span>)+a5(<span class="built_in">i</span><span class="number">-1</span>); </span><br><span class="line"> <span class="keyword">if</span> a3(<span class="built_in">i</span>)<=m </span><br><span class="line"> a4(<span class="built_in">i</span>)=a3(<span class="built_in">i</span>);</span><br><span class="line"> <span class="keyword">else</span> </span><br><span class="line"> a4(<span class="built_in">i</span>)=m;</span><br><span class="line"> <span class="keyword">end</span> </span><br><span class="line"><span class="keyword">end</span> </span><br><span class="line">a=[a1,a2,a3,a4,a5]; </span><br><span class="line">sum(a)/n</span><br></pre></td></tr></table></figure>
</div>
<div class="article-info article-info-index">
<p class="article-more-link">
<a class="article-more-a" href="/2021/09/01/%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E4%B9%8B%E6%8E%92%E9%98%9F%E8%AE%BA/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-熵权法确定权重" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/08/30/%E7%86%B5%E6%9D%83%E6%B3%95%E7%A1%AE%E5%AE%9A%E6%9D%83%E9%87%8D/">熵权法确定权重</a>
</h1>
<a href="/2021/08/30/%E7%86%B5%E6%9D%83%E6%B3%95%E7%A1%AE%E5%AE%9A%E6%9D%83%E9%87%8D/" class="archive-article-date">
<time datetime="2021-08-30T07:41:42.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-08-30</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="一、基本原理"><a href="#一、基本原理" class="headerlink" title="一、基本原理"></a>一、基本原理</h1><p>在信息论中,熵是对不确定性的一种度量。不确定性越大,熵就越大,包含的信息量越大;不确定性越小,熵就越小,包含的信息量就越小。</p>
<p>根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大。比如样本数据在某指标下取值都相等,则该指标对总体评价的影响为0,权值为0.</p>
<p>熵权法是一种客观赋权法,因为它仅依赖于数据本身的离散性。</p>
<h1 id="二、熵值法步骤"><a href="#二、熵值法步骤" class="headerlink" title="二、熵值法步骤"></a>二、熵值法步骤</h1><ol>
<li>对 $n$ 个样本, $m$ 个指标,则 $x_{ij}$ 为第 $i$ 个样本的第 $j$ 个指标的数值( $i=1,···,n; j=1,···,m$ );</li>
</ol>
<ol start="2">
<li>指标的归一化处理:异质指标同质化</li>
</ol>
<p>由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,先要进行标准化处理,即把指标的绝对值转化为相对值,从而解决各项不同质指标值的同质化问题。</p>
<p>另外,正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好),因此,对于正向负向指标需要采用不同的算法进行数据标准化处理:</p>
<p><img src="2021-08-30-15-45-56.png"></p>
<p>为了方便起见,归一化后的数据 $x_{ij}^{\prime}$ 仍记为 $x_{ij}$ ;</p>
<ol>
<li>计算第 $j$ 项指标下第 $i$ 个样本值占该指标的比重:</li>
</ol>
<p>$p_{ij}=\frac{x_{ij}}{\Sigma_{i=1}^nx_{ij}},i=1,···,n,j=1,···,m$</p>
<ol start="4">
<li>计算第 $j$ 项指标的熵值:</li>
</ol>
<p>$e_j=-k\Sigma_{i=1}^np_{ij}ln(p_{ij}),j=1,···,m$</p>
<p>其中, $k=1/ln(n)>0$. 满足 $e_j\ge0$ ;</p>
<ol start="5">
<li>计算信息熵冗余度(差异):</li>
</ol>
<p>$d_j=1-e_j, j=1, ···,m$</p>
<ol start="6">
<li>计算各项指标的权重:</li>
</ol>
<p>$w_j=\frac{d_j}{\Sigma_{j=1}^mw_jx_{ij}}, i=1, ···, n$</p>
<ol start="7">
<li>计算各样本的综合得分:</li>
</ol>
<p>$s_i=\Sigma_{j=1}^mw_jx_{ij}$</p>
<p>其中, $x_{ij}$ 为标准化后的数据。</p>
<p>三、Matlab实现</p>
<p>按上述算法步骤,编写Matlab函数:shang.m</p>
<figure class="highlight matlab"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="params">[s,w]</span>=<span class="title">shang</span><span class="params">(x,ind)</span></span></span><br><span class="line"><span class="comment">%实现用熵值法求各指标(列)的权重及各数据行的得分</span></span><br><span class="line"><span class="comment">%x为原始数据矩阵, 一行代表一个样本, 每列对应一个指标</span></span><br><span class="line"><span class="comment">%ind指示向量,指示各列正向指标还是负向指标,1表示正向指标,2表示负向指标</span></span><br><span class="line"><span class="comment">%s返回各行(样本)得分,w返回各列权重</span></span><br><span class="line">[n,m]=<span class="built_in">size</span>(x); <span class="comment">% n个样本, m个指标</span></span><br><span class="line"><span class="comment">%%数据的归一化处理</span></span><br><span class="line"><span class="keyword">for</span> <span class="built_in">i</span>=<span class="number">1</span>:m</span><br><span class="line"> <span class="keyword">if</span> ind(<span class="built_in">i</span>)==<span class="number">1</span> <span class="comment">%正向指标归一化</span></span><br><span class="line"> X(:,<span class="built_in">i</span>)=guiyi(x(:,<span class="built_in">i</span>),<span class="number">1</span>,<span class="number">0.002</span>,<span class="number">0.996</span>); <span class="comment">%若归一化到[0,1], 0会出问题</span></span><br><span class="line"> <span class="keyword">else</span> <span class="comment">%负向指标归一化</span></span><br><span class="line"> X(:,<span class="built_in">i</span>)=guiyi(x(:,<span class="built_in">i</span>),<span class="number">2</span>,<span class="number">0.002</span>,<span class="number">0.996</span>);</span><br><span class="line"> <span class="keyword">end</span></span><br><span class="line"><span class="keyword">end</span></span><br><span class="line"><span class="comment">%%计算第j个指标下,第i个样本占该指标的比重p(i,j)</span></span><br><span class="line"><span class="keyword">for</span> <span class="built_in">i</span>=<span class="number">1</span>:n</span><br><span class="line"> <span class="keyword">for</span> <span class="built_in">j</span>=<span class="number">1</span>:m</span><br><span class="line"> p(<span class="built_in">i</span>,<span class="built_in">j</span>)=X(<span class="built_in">i</span>,<span class="built_in">j</span>)/sum(X(:,<span class="built_in">j</span>));</span><br><span class="line"> <span class="keyword">end</span></span><br><span class="line"><span class="keyword">end</span></span><br><span class="line"><span class="comment">%%计算第j个指标的熵值e(j)</span></span><br><span class="line">k=<span class="number">1</span>/<span class="built_in">log</span>(n);</span><br><span class="line"><span class="keyword">for</span> <span class="built_in">j</span>=<span class="number">1</span>:m</span><br><span class="line"> e(<span class="built_in">j</span>)=-k*sum(p(:,<span class="built_in">j</span>).*<span class="built_in">log</span>(p(:,<span class="built_in">j</span>)));</span><br><span class="line"><span class="keyword">end</span></span><br><span class="line">d=<span class="built_in">ones</span>(<span class="number">1</span>,m)-e; <span class="comment">%计算信息熵冗余度</span></span><br><span class="line">w=d./sum(d); <span class="comment">%求权值w</span></span><br><span class="line">s=<span class="number">100</span>*w*X'; <span class="comment">%求综合得分</span></span><br></pre></td></tr></table></figure>
<p>用到的归一化函数:</p>
<figure class="highlight matlab"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">y</span>=<span class="title">guiyi</span><span class="params">(x,type,ymin,ymax)</span></span></span><br><span class="line"><span class="comment">%实现正向或负向指标归一化,返回归一化后的数据矩阵</span></span><br><span class="line"><span class="comment">%x为原始数据矩阵, 一行代表一个样本, 每列对应一个指标</span></span><br><span class="line"><span class="comment">%type设定正向指标1,负向指标2</span></span><br><span class="line"><span class="comment">%ymin,ymax为归一化的区间端点</span></span><br><span class="line">[n,m]=<span class="built_in">size</span>(x);</span><br><span class="line">y=<span class="built_in">zeros</span>(n,m);</span><br><span class="line">xmin=<span class="built_in">min</span>(x);</span><br><span class="line">xmax=<span class="built_in">max</span>(x);</span><br><span class="line"><span class="keyword">switch</span> <span class="built_in">type</span></span><br><span class="line"> <span class="keyword">case</span> <span class="number">1</span></span><br><span class="line"> <span class="keyword">for</span> <span class="built_in">j</span>=<span class="number">1</span>:m</span><br><span class="line"> y(:,<span class="built_in">j</span>)=(ymax-ymin)*(x(:,<span class="built_in">j</span>)-xmin(<span class="built_in">j</span>))/(xmax(<span class="built_in">j</span>)-xmin(<span class="built_in">j</span>))+ymin;</span><br><span class="line"> <span class="keyword">end</span></span><br><span class="line"> <span class="keyword">case</span> <span class="number">2</span></span><br><span class="line"> <span class="keyword">for</span> <span class="built_in">j</span>=<span class="number">1</span>:m</span><br><span class="line"> y(:,<span class="built_in">j</span>)=(ymax-ymin)*(xmax(<span class="built_in">j</span>)-x(:,<span class="built_in">j</span>))/(xmax(<span class="built_in">j</span>)-xmin(<span class="built_in">j</span>))+ymin;</span><br><span class="line"> <span class="keyword">end</span></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure>
<p>程序测试,现有数据shang_datas.mat, 为2014年31个省份的就业与劳动保障数据, 包含5个指标:社会养老保险参保率、医疗保险参保率、失业保险参保率、工伤保险参保率、工伤事故发生率, 其中第5个指标为负向指标。</p>
<p>执行代码:</p>
<figure class="highlight matlab"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line">load shang_datas</span><br><span class="line"></span><br><span class="line">Ind=[<span class="number">1</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span> <span class="number">2</span>]; <span class="comment">%指定各指标的正向or负向</span></span><br><span class="line"></span><br><span class="line">[S,W]=shang(X,Ind)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">运行结果:</span><br><span class="line"></span><br><span class="line">S =</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Columns <span class="number">1</span> through <span class="number">9</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="number">3.2624</span> <span class="number">11.7822</span> <span class="number">5.2952</span> <span class="number">1.3521</span> <span class="number">2.5262</span> <span class="number">2.0425</span> <span class="number">4.4215</span> <span class="number">2.6953</span> <span class="number">2.5208</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Columns <span class="number">10</span> through <span class="number">18</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="number">7.8834</span> <span class="number">4.7410</span> <span class="number">7.4679</span> <span class="number">1.4645</span> <span class="number">3.2541</span> <span class="number">1.6292</span> <span class="number">3.3035</span> <span class="number">1.6282</span> <span class="number">1.9043</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Columns <span class="number">19</span> through <span class="number">27</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="number">2.0526</span> <span class="number">7.8582</span> <span class="number">0.7256</span> <span class="number">3.8943</span> <span class="number">3.7992</span> <span class="number">1.7187</span> <span class="number">0.7766</span> <span class="number">0.6445</span> <span class="number">2.0167</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Columns <span class="number">28</span> through <span class="number">31</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="number">0.7801</span> <span class="number">1.3353</span> <span class="number">2.2775</span> <span class="number">2.9462</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">W = <span class="number">0.0896</span> <span class="number">0.2195</span> <span class="number">0.3330</span> <span class="number">0.3073</span> <span class="number">0.0506</span></span><br></pre></td></tr></table></figure>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<i class="icon-price-tags icon"></i>
<ul class="article-tag-list">
<li class="article-tag-list-item">
<a href="javascript:void(0)" class="js-tag article-tag-list-link color5">数学建模</a>
</li>
</ul>
</div>
<p class="article-more-link">
<a class="article-more-a" href="/2021/08/30/%E7%86%B5%E6%9D%83%E6%B3%95%E7%A1%AE%E5%AE%9A%E6%9D%83%E9%87%8D/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-pytorch学习-中-torch-squeeze-和torch-unsqueeze-的用法" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/08/22/pytorch%E5%AD%A6%E4%B9%A0-%E4%B8%AD-torch-squeeze-%E5%92%8Ctorch-unsqueeze-%E7%9A%84%E7%94%A8%E6%B3%95/">pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法</a>
</h1>
<a href="/2021/08/22/pytorch%E5%AD%A6%E4%B9%A0-%E4%B8%AD-torch-squeeze-%E5%92%8Ctorch-unsqueeze-%E7%9A%84%E7%94%A8%E6%B3%95/" class="archive-article-date">
<time datetime="2021-08-22T09:58:31.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-08-22</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
</div>
<div class="article-info article-info-index">
<p class="article-more-link">
<a class="article-more-a" href="/2021/08/22/pytorch%E5%AD%A6%E4%B9%A0-%E4%B8%AD-torch-squeeze-%E5%92%8Ctorch-unsqueeze-%E7%9A%84%E7%94%A8%E6%B3%95/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-tensor数据基操-索引与切片" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/08/21/tensor%E6%95%B0%E6%8D%AE%E5%9F%BA%E6%93%8D-%E7%B4%A2%E5%BC%95%E4%B8%8E%E5%88%87%E7%89%87/">tensor数据基操----索引与切片</a>
</h1>
<a href="/2021/08/21/tensor%E6%95%B0%E6%8D%AE%E5%9F%BA%E6%93%8D-%E7%B4%A2%E5%BC%95%E4%B8%8E%E5%88%87%E7%89%87/" class="archive-article-date">
<time datetime="2021-08-21T12:55:22.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-08-21</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="方式1:通过连续的"><a href="#方式1:通过连续的" class="headerlink" title="方式1:通过连续的[ ]"></a>方式1:通过连续的[ ]</h1><p>这种方式在各种编程语言中都很常见,即数组的索引,但是这种方式只能取到某一具体维度的数值,不能随心所欲的固定间隔或者非固定间隔的切片</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">a = tf.ones([<span class="number">1</span>,<span class="number">5</span>,<span class="number">5</span>,<span class="number">3</span>])</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>][<span class="number">0</span>])</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>][<span class="number">0</span>][<span class="number">0</span>])</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>][<span class="number">0</span>][<span class="number">0</span>][<span class="number">2</span>])</span><br></pre></td></tr></table></figure>
<p><img src="https://img2018.cnblogs.com/i-beta/1717633/202001/1717633-20200117204201634-920546460.png"></p>
<h1 id="方式2:通过-……"><a href="#方式2:通过-……" class="headerlink" title="方式2:通过[ , , ,……]"></a>方式2:通过[ , , ,……]</h1><p>这种方式其实是numpy对方式1的一种在可读性方面的优化,和方式1相比,可读性明显提高</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">a = tf.random.normal([<span class="number">4</span>,<span class="number">28</span>,<span class="number">28</span>,<span class="number">3</span>])</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">1</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">1</span>,<span class="number">2</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">2</span>].shape)</span><br></pre></td></tr></table></figure>
<p><img src="https://img2018.cnblogs.com/i-beta/1717633/202001/1717633-20200117204654543-764698301.png"></p>
<h1 id="方式3:一维tensor可通过-:"><a href="#方式3:一维tensor可通过-:" class="headerlink" title="方式3:一维tensor可通过[ :]"></a>方式3:一维tensor可通过[ :]</h1><p>这种方式也是python中比较常用的数组切片方式,切片范围[ A:B)</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">a=tf.<span class="built_in">range</span>(<span class="number">10</span>)</span><br><span class="line"><span class="built_in">print</span>(a)</span><br><span class="line"><span class="built_in">print</span>(a[-<span class="number">1</span>:])</span><br><span class="line"><span class="built_in">print</span>(a[-<span class="number">2</span>:])</span><br><span class="line"><span class="built_in">print</span>(a[:<span class="number">2</span>])</span><br><span class="line"><span class="built_in">print</span>(a[:-<span class="number">1</span>])</span><br></pre></td></tr></table></figure>
<p><img src="https://img2018.cnblogs.com/i-beta/1717633/202001/1717633-20200117205052028-1609835816.png"></p>
<h1 id="方式4:对于多维tensor可通过-,:,:,:……"><a href="#方式4:对于多维tensor可通过-,:,:,:……" class="headerlink" title="方式4:对于多维tensor可通过[ ,:,:,:……]"></a>方式4:对于多维tensor可通过[ ,:,:,:……]</h1><p>相对前面几种切片方式都更加丰富,也可以完成多样的切片(跳过某一维度)start:end</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">a = tf.random.normal([<span class="number">4</span>,<span class="number">28</span>,<span class="number">28</span>,<span class="number">3</span>])</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>,:,:,:].shape)</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>,<span class="number">1</span>,:,:].shape)</span><br><span class="line"><span class="built_in">print</span>(a[:,:,:,<span class="number">0</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[:,:,:,<span class="number">2</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[:,<span class="number">0</span>,:,:].shape)</span><br></pre></td></tr></table></figure>
<p><img src="https://img2018.cnblogs.com/i-beta/1717633/202001/1717633-20200117205939712-43108729.png"></p>
<h1 id="方式5:隔行采样-……"><a href="#方式5:隔行采样-……" class="headerlink" title="方式5:隔行采样[ : : ,: : ,: : ,……]"></a>方式5:隔行采样[ : : ,: : ,: : ,……]</h1><p>通过增加了一个:,使用方式start:end:step进行间隔采样(::step代表从最开始到最末尾以步长step间隔采样)</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">a = tf.random.normal([<span class="number">4</span>,<span class="number">28</span>,<span class="number">28</span>,<span class="number">3</span>])</span><br><span class="line"><span class="built_in">print</span>(a[:,<span class="number">0</span>:<span class="number">28</span>:<span class="number">2</span>,<span class="number">0</span>:<span class="number">28</span>:<span class="number">2</span>,:].shape)</span><br><span class="line"><span class="built_in">print</span>(a[:,:<span class="number">14</span>,:<span class="number">14</span>,:].shape)</span><br><span class="line"><span class="built_in">print</span>(a[:,<span class="number">14</span>:,<span class="number">14</span>:,:].shape)</span><br><span class="line"><span class="built_in">print</span>(a[:,::<span class="number">2</span>,::<span class="number">2</span>,:].shape)</span><br></pre></td></tr></table></figure>
<p><img src="https://img2018.cnblogs.com/i-beta/1717633/202001/1717633-20200117211102432-1630988448.png"></p>
<p>注:若step<0则倒序采样</p>
<h1 id="方式6:用…进行采样"><a href="#方式6:用…进行采样" class="headerlink" title="方式6:用…进行采样"></a>方式6:用…进行采样</h1><p>…可以代替连续的:,增强代码的易书写性和可读性</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">a = tf.random.normal([<span class="number">2</span>,<span class="number">4</span>,<span class="number">28</span>,<span class="number">28</span>,<span class="number">3</span>])</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>,:,:,:,:].shape)</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>,...].shape)</span><br><span class="line"><span class="built_in">print</span>(a[:,:,:,:,<span class="number">0</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[...,<span class="number">0</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">0</span>,...,<span class="number">2</span>].shape)</span><br><span class="line"><span class="built_in">print</span>(a[<span class="number">1</span>,<span class="number">0</span>,...,<span class="number">0</span>].shape)</span><br></pre></td></tr></table></figure>
<p><img src="https://img2018.cnblogs.com/i-beta/1717633/202001/1717633-20200117211942026-2079829726.png"></p>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<i class="icon-price-tags icon"></i>
<ul class="article-tag-list">
<li class="article-tag-list-item">
<a href="javascript:void(0)" class="js-tag article-tag-list-link color3">pytorch</a>
</li>
</ul>
</div>
<p class="article-more-link">
<a class="article-more-a" href="/2021/08/21/tensor%E6%95%B0%E6%8D%AE%E5%9F%BA%E6%93%8D-%E7%B4%A2%E5%BC%95%E4%B8%8E%E5%88%87%E7%89%87/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-MySQL基础" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/08/19/MySQL%E5%9F%BA%E7%A1%80/">MySQL基础</a>
</h1>
<a href="/2021/08/19/MySQL%E5%9F%BA%E7%A1%80/" class="archive-article-date">
<time datetime="2021-08-19T12:56:27.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-08-19</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<h2 id="本单元目标"><a href="#本单元目标" class="headerlink" title="本单元目标"></a>本单元目标</h2><pre><code>一、为什么要学习数据库
二、数据库的相关概念
DBMS、DB、SQL
三、数据库存储数据的特点
四、初始MySQL
MySQL产品的介绍
MySQL产品的安装 ★
MySQL服务的启动和停止 ★
MySQL服务的登录和退出 ★
MySQL的常见命令和语法规范
五、DQL语言的学习 ★
基础查询 ★
条件查询 ★
排序查询 ★
常见函数 ★
分组函数 ★
分组查询 ★
连接查询 ★
子查询 √
分页查询 ★
union联合查询 √
六、DML语言的学习 ★
插入语句
修改语句
删除语句
七、DDL语言的学习
库和表的管理 √
常见数据类型介绍 √
常见约束 √
八、TCL语言的学习
事务和事务处理
九、视图的讲解 √
十、变量
十一、存储过程和函数
十二、流程控制结构
</code></pre>
<a class="article-more-a" href="/2021/08/19/MySQL%E5%9F%BA%E7%A1%80/#more">more >></a>
</div>
<div class="article-info article-info-index">
<p class="article-more-link">
<a class="article-more-a" href="/2021/08/19/MySQL%E5%9F%BA%E7%A1%80/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-python中的argparse-ArgumentParser" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/08/16/python%E4%B8%AD%E7%9A%84argparse-ArgumentParser/">python中的argparse.ArgumentParser</a>
</h1>
<a href="/2021/08/16/python%E4%B8%AD%E7%9A%84argparse-ArgumentParser/" class="archive-article-date">
<time datetime="2021-08-16T13:48:17.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-08-16</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<!--注释-->
<h1 id="一、argparse介绍"><a href="#一、argparse介绍" class="headerlink" title="一、argparse介绍"></a>一、argparse介绍</h1><p><a target="_blank" rel="noopener" href="https://docs.python.org/zh-cn/3/library/argparse.html#argumentparser-objects">官方文档</a><br>argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口。通过在程序中定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。</p>
<a class="article-more-a" href="/2021/08/16/python%E4%B8%AD%E7%9A%84argparse-ArgumentParser/#more">more >></a>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<i class="icon-price-tags icon"></i>
<ul class="article-tag-list">
<li class="article-tag-list-item">
<a href="javascript:void(0)" class="js-tag article-tag-list-link color2">python</a>
</li>
</ul>
</div>
<div class="article-category tagcloud">
<i class="icon-book icon"></i>
<ul class="article-tag-list">
<li class="article-tag-list-item">
<a href="/categories/深度学习//" class="article-tag-list-link color5">深度学习</a>
</li>
<li class="article-tag-list-item">
<a href="/categories/深度学习/python知识//" class="article-tag-list-link color4">python知识</a>
</li>
</ul>
</div>
<p class="article-more-link">
<a class="article-more-a" href="/2021/08/16/python%E4%B8%AD%E7%9A%84argparse-ArgumentParser/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-深度学习基础知识" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/08/11/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/">深度学习基础知识</a>
</h1>
<a href="/2021/08/11/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" class="archive-article-date">
<time datetime="2021-08-11T12:29:39.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-08-11</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="权重衰减(weight-decay)与学习率衰减(learning-rate-decay)"><a href="#权重衰减(weight-decay)与学习率衰减(learning-rate-decay)" class="headerlink" title="权重衰减(weight decay)与学习率衰减(learning rate decay)"></a>权重衰减(weight decay)与学习率衰减(learning rate decay)</h1><h2 id="1-权重衰减(weight-decay)"><a href="#1-权重衰减(weight-decay)" class="headerlink" title="1. 权重衰减(weight decay)"></a>1. 权重衰减(weight decay)</h2><p>L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化。</p>
<h3 id="1-1-L2正则化与权重衰减系数"><a href="#1-1-L2正则化与权重衰减系数" class="headerlink" title="1.1 L2正则化与权重衰减系数"></a>1.1 L2正则化与权重衰减系数</h3><p>L2正则化就是在代价函数后面再加上一个正则化项:<br><img src="https://img-blog.csdn.net/20180630161015526?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Byb2dyYW1fZGV2ZWxvcGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"></p>
<p>其中C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2 1/211经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整为1。系数λ就是权重衰减系数。</p>
<h3 id="1-2-为什么可以对权重进行衰减"><a href="#1-2-为什么可以对权重进行衰减" class="headerlink" title="1.2 为什么可以对权重进行衰减"></a>1.2 为什么可以对权重进行衰减</h3><p>我们对加入L2正则化后的代价函数进行推导,先求导:</p>
<p><img src="https://img-blog.csdn.net/2018063016132630?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Byb2dyYW1fZGV2ZWxvcGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"></p>
<p>可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响:</p>
<p><img src="https://img-blog.csdn.net/20180630161350343?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Byb2dyYW1fZGV2ZWxvcGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"></p>
<p>在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为1-ηλ/n,因为η、λ、n都是正的,所以1-ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。</p>
<p><img src="https://img-blog.csdn.net/20180630161538529?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Byb2dyYW1fZGV2ZWxvcGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"><br><img src="https://img-blog.csdn.net/20180630161545925?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Byb2dyYW1fZGV2ZWxvcGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"></p>
<p>另外,需要提一下,对于基于mini-batch的随机梯度下降,w和b更新的公式跟上面给出的有点不同:</p>
<p>对比上面w的更新公式,可以发现后面那一项变了,变成所有导数加和,乘以η再除以m,m是一个mini-batch中样本的个数。</p>
<h3 id="1-3-权重衰减(L2正则化)的作用"><a href="#1-3-权重衰减(L2正则化)的作用" class="headerlink" title="1.3 权重衰减(L2正则化)的作用"></a>1.3 权重衰减(L2正则化)的作用</h3><p><strong>作用</strong>: 权重衰减(L2正则化)可以避免模型过拟合问题。</p>
<p><strong>思考</strong>: L2正则化项有让w变小的效果,但是为什么w变小可以防止过拟合呢?</p>
<p><strong>原理</strong>: </p>
<ol>
<li>从模型的复杂度上解释:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合更好(这个法则也叫做奥卡姆剃刀),而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果。</li>
<li>从数学方面的解释:过拟合的时候,拟合函数的系数往往非常大,为什么?如下图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。</li>
</ol>
<h2 id="学习率衰减(learning-rate-decay)"><a href="#学习率衰减(learning-rate-decay)" class="headerlink" title="学习率衰减(learning rate decay)"></a>学习率衰减(learning rate decay)</h2><p>在训练模型的时候,通常会遇到这种情况:我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learning rate),但是训练集的损失下降到一定的程度后就不在下降了,比如training loss一直在0.7和0.9之间来回震荡,不能进一步下降。如下图所示:</p>
<p><img src="https://img-blog.csdn.net/2018063016182747?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Byb2dyYW1fZGV2ZWxvcGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"></p>
<p>遇到这种情况通常可以通过适当降低学习率(learning rate)来实现。但是,降低学习率又会延长训练所需的时间。<br>学习率衰减(learning rate decay) 就是一种可以平衡这两者之间矛盾的解决方案。学习率衰减的基本思想是:学习率随着训练的进行逐渐衰减。<br>学习率衰减基本有两种实现方法:</p>
<ul>
<li>线性衰减。例如:每过5个epochs学习率减半。</li>
<li>指数衰减。例如:随着迭代轮数的增加学习率自动发生衰减,每过5个epochs将学习率乘以0.9998。具体算法如下:</li>
</ul>
<p>decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)<br>其中decayed_learning_rate为每一轮优化时使用的学习率,learning_rate为事先设定的初始学习率,decay_rate为衰减系数,decay_steps为衰减速度。</p>
<h1 id="残差连接(skip-connect)-(residual-connections)"><a href="#残差连接(skip-connect)-(residual-connections)" class="headerlink" title="残差连接(skip connect)/(residual connections)"></a>残差连接(skip connect)/(residual connections)</h1><p>想必做深度学习的都知道skip connect,也就是残差连接,那什么是skip connect呢?如下图<br><img src="https://img-blog.csdnimg.cn/20200502093404478.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5ODUyNjc2,size_16,color_FFFFFF,t_70"></p>
<p>上面是来自于resnet【1】的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。</p>
<p>当我们强行将一个输入添加到函数的输出的时候,虽然我们仍然可以用G(x)来描述输入输出的关系,但是这个G(x)却可以明确的拆分为F(x)和X的线性叠加。</p>
<p>这就是skip connect的思想,将输出表述为输入和输入的一个非线性变换的线性叠加,没用新的公式,没有新的理论,只是换了一种新的表达。</p>
<p>它解决了深层网络的训练问题,作者的原论文中达到了上千层。</p>
<p>残差连接是何的首创吗?当然不是,传统的神经网络中早就有这个概念,文【2】中则明确提出了残差的结构,这是来自于LSTM的控制门的思想。<br>$$y = H(x,WH) + X,此所谓残差连接,skip-connection。$$</p>
<p>那为什么要这么做呢?首先大家已经形成了一个通识,在一定程度上,网络越深表达能力越强,性能越好。</p>
<p>不过,好是好了,随着网络深度的增加,带来了许多问题,梯度消散,梯度爆炸;在resnet出来之前大家没想办法去解决吗?当然不是。更好的优化方法,更好的初始化策略,BN层,Relu等各种激活函数,都被用过了,但是仍然不够,改善问题的能力有限,直到残差连接被广泛使用。</p>
<p>大家都知道深度学习依靠误差的链式反向传播来进行参数更新,假如我们有这样一个函数:<br><img src="https://img-blog.csdnimg.cn/20200502093551295.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5ODUyNjc2,size_16,color_FFFFFF,t_70"></p>
<p>其中的f,g,k大家可以自行脑补为卷积,激活,分类器。<br>cost对f的导数为:<br><img src="https://img-blog.csdnimg.cn/20200502093606306.png"></p>
<p>它有隐患,一旦其中某一个导数很小,多次连乘后梯度可能越来越小,这就是常说的梯度消散,对于深层网络,传到浅层几乎就没了。但是如果使用了残差,每一个导数就加上了一个恒等项1,$dh/dx=d(f+x)/dx=1+df/dx$。此时就算原来的导数df/dx很小,这时候误差仍然能够有效的反向传播,这就是核心思想。</p>
<p>有这样的一个输入输出关系:</p>
<h1 id="dilated-convolution"><a href="#dilated-convolution" class="headerlink" title="dilated convolution"></a>dilated convolution</h1><p>直观来讲,Dilated Convolutions就是为了获得大的感受野。</p>
<p>插播一句:何谓感受野? 感受野范围内的任意元素变化都会影响到输出。</p>
<p>下图很直观的介绍了什么是 Dilated Convolutions 以及 感受野。<br><img src="https://img-blog.csdn.net/20170410142647837?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2h1emZhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"></p>
<ul>
<li><strong>(a)</strong> 原始的 3×3卷积,1-dilated,感受野为 3×3;</li>
<li><strong>(b)</strong> 在(a)的基础上进行 3×3卷积,2-dilated,感受野为 7×7;</li>
<li><strong>(c)</strong> 在(b)的基础上进行 3×3卷积,4-dilated,感受野为 15×15;</li>
</ul>
<p>由于padding和卷积的stride=1,卷积前后feature map大小可以保持不变,但每个元素的感受野指数增大。</p>
<p>Dilated/Atrous Convolution 或者是 Convolution with holes 从字面上就很好理解,是在标准的 convolution map 里注入空洞,以此来增加 reception field。相比原来的正常convolution,dilated convolution 多了一个 hyper-parameter 称之为 dilation rate 指的是kernel的间隔数量(e.g. 正常的 convolution 是 dilatation rate 1)。</p>
<p>下图为原始3x3卷积<br><img src="https://github.com/vdumoulin/conv_arithmetic/raw/master/gif/padding_strides.gif"></p>
<p>这是Dilated Convolution with a 3 x 3 kernel and dilation rate 2<br><img src="https://github.com/vdumoulin/conv_arithmetic/raw/master/gif/dilation.gif"></p>
<h1 id="dropout"><a href="#dropout" class="headerlink" title="dropout"></a>dropout</h1><h2 id="1-Dropout简介"><a href="#1-Dropout简介" class="headerlink" title="1. Dropout简介"></a>1. Dropout简介</h2><h3 id="1-1-Dropout出现的原因"><a href="#1-1-Dropout出现的原因" class="headerlink" title="1.1 Dropout出现的原因"></a>1.1 Dropout出现的原因</h3><p>在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。</p>
<a class="article-more-a" href="/2021/08/11/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/#more">more >></a>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<i class="icon-price-tags icon"></i>
<ul class="article-tag-list">
<li class="article-tag-list-item">
<a href="javascript:void(0)" class="js-tag article-tag-list-link color5">深度学习</a>
</li>
</ul>
</div>
<p class="article-more-link">
<a class="article-more-a" href="/2021/08/11/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-maven" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/07/26/maven/">maven</a>
</h1>
<a href="/2021/07/26/maven/" class="archive-article-date">
<time datetime="2021-07-26T14:06:56.000Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-07-26</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="Maven-自动化的构建工具"><a href="#Maven-自动化的构建工具" class="headerlink" title="Maven 自动化的构建工具"></a>Maven 自动化的构建工具</h1>
<a class="article-more-a" href="/2021/07/26/maven/#more">more >></a>
</div>
<div class="article-info article-info-index">
<p class="article-more-link">
<a class="article-more-a" href="/2021/07/26/maven/">展开全文 >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<aside class="wrap-side-operation">
<div class="mod-side-operation">
<div class="jump-container" id="js-jump-container" style="display:none;">
<a href="javascript:void(0)" class="mod-side-operation__jump-to-top">
<i class="icon-font icon-back"></i>
</a>
<div id="js-jump-plan-container" class="jump-plan-container" style="top: -11px;">
<i class="icon-font icon-plane jump-plane"></i>
</div>
</div>
</div>
</aside>
<article id="post-hello-world" class="article article-type-post article-index" itemscope itemprop="blogPost">
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2021/07/18/hello-world/">Hello World</a>
</h1>
<a href="/2021/07/18/hello-world/" class="archive-article-date">
<time datetime="2021-07-18T09:12:21.393Z" itemprop="datePublished"><i class="icon-calendar icon"></i>2021-07-18</time>
</a>
</header>
<div class="article-entry" itemprop="articleBody">
<p>Welcome to <a target="_blank" rel="noopener" href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a target="_blank" rel="noopener" href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a target="_blank" rel="noopener" href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a target="_blank" rel="noopener" href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p>
<h2 id="Hello-Hexo"><a href="#Hello-Hexo" class="headerlink" title="Hello Hexo"></a>Hello Hexo</h2><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3>
<a class="article-more-a" href="/2021/07/18/hello-world/#more">more >></a>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<i class="icon-price-tags icon"></i>
<ul class="article-tag-list">
<li class="article-tag-list-item">
<a href="javascript:void(0)" class="js-tag article-tag-list-link color5">hexo</a>
</li>
</ul>
</div>
<div class="article-category tagcloud">
<i class="icon-book icon"></i>
<ul class="article-tag-list">
<li class="article-tag-list-item">
<a href="/categories/软件构造//" class="article-tag-list-link color5">软件构造</a>