-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
634 lines (304 loc) · 194 KB
/
Copy pathsearch.xml
File metadata and controls
634 lines (304 loc) · 194 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
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>01 ROCKET: Exceptionally fast and accurate time series classification using random convolution kernels</title>
<link href="2022-06-21/everday-paper-reading/01-rocket-exceptionally-fast-and-accurate-time-series-classification-using-random-convolution-kernels/"/>
<url>2022-06-21/everday-paper-reading/01-rocket-exceptionally-fast-and-accurate-time-series-classification-using-random-convolution-kernels/</url>
<content type="html"><![CDATA[]]></content>
<categories>
<category> Everyday Paper Reading </category>
</categories>
</entry>
<entry>
<title>Python Sorted Containers 02 - SortedDict & SortedSet</title>
<link href="2022-06-20/python/data-structure/sorted-containers/02-sorteddict-and-sortedset/"/>
<url>2022-06-20/python/data-structure/sorted-containers/02-sorteddict-and-sortedset/</url>
<content type="html"><![CDATA[<h1 id="SortedDict"><a href="#SortedDict" class="headerlink" title="SortedDict"></a>SortedDict</h1><p>在插入、删除键值对后仍然可以按照键值自动维护顺序的字典。</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">from</span> sortedcontainers <span class="token keyword">import</span> SortedDictsd <span class="token operator">=</span> SortedDict<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><h2 id="插入键值对"><a href="#插入键值对" class="headerlink" title="插入键值对"></a>插入键值对</h2><ol><li>插入/更新单个键值对:<code>SortedDict.__setitem__(key, val)</code>, <code>SortedDict[key]=val</code></li><li>插入(如果键值不存在)的键值对:<code>SortedDict.setdefault(key, val)</code></li><li>插入/更新多个键值对:<code>SortedDict.update({key1: val1, key2: val2, ...})</code></li></ol><h2 id="移除键值对"><a href="#移除键值对" class="headerlink" title="移除键值对"></a>移除键值对</h2><ol><li>根据键值移除:<code>SortedDict.__delitem__(key)</code>, <code>del SortedDict[key]</code>, <code>SortedDict.pop(key)</code></li><li>根据键值的索引移除:<code>SortedDict.popitem(index)</code></li></ol><h2 id="查询键值对"><a href="#查询键值对" class="headerlink" title="查询键值对"></a>查询键值对</h2><ol><li>根据键值获取:<code>SortedDict[key]</code>, <code>SortedDict.__getitem__(key)</code></li><li>查询键值是否存在:<code>SortedDict.__contains__(key)</code>, <code>key in SortedDict</code></li><li>获取键值对(不存在,返回空):<code>SortedDict.get(key)</code></li><li>根据键值索引获取:<code>SortedDict.peekitem(index)</code></li><li>支持 <code>SortedList</code> 包含的其他接口:<code>SortedDict.bisect_left</code>, <code>SortedDict.bisect_right</code>, <code>SortedDict.index</code>, …</li></ol><h2 id="Dict类内置接口支持"><a href="#Dict类内置接口支持" class="headerlink" title="Dict类内置接口支持"></a>Dict类内置接口支持</h2><ol><li>获取键的列表:<code>SortedDict.keys()</code></li><li>获取值的列表:<code>SortedDict.values()</code></li><li>获取键值对的列表:<code>SortedDict.items()</code></li></ol><h1 id="SortedSet"><a href="#SortedSet" class="headerlink" title="SortedSet"></a>SortedSet</h1><p>将可哈希的元素保持顺序的存放在列表里。</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">from</span> sortedcollections <span class="token keyword">import</span> SortedSetss <span class="token operator">=</span> SortedSet<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><h2 id="Set-类内置接口"><a href="#Set-类内置接口" class="headerlink" title="Set 类内置接口"></a>Set 类内置接口</h2><ol><li>查询元素接口:<code>SortedSet.__contains__(val)</code></li><li>增加元素接口:<code>SortedSet.add(val)</code>, <code>SortedSet.update(Iterable[val1, val2, ...])</code></li><li>移除元素接口:<code>SortedSet.discard(val)</code>, <code>SortedSet.remove(val)</code></li><li>集合操作接口:<code>SortedSet.difference(SortedSet)</code>, <code>SortedSet.intersection(SortedSet)</code>, <code>SortedSet.symmetric_difference(SortedSet)</code>, <code>SortedSet.union(SortedSet)</code></li></ol>]]></content>
<categories>
<category> Python </category>
</categories>
<tags>
<tag> Data Structure </tag>
<tag> Sorted Containers </tag>
</tags>
</entry>
<entry>
<title>Python Sorted Containers 01 - Install and SortedList</title>
<link href="2022-06-20/python/data-structure/sorted-containers/01-install-and-sortedlist/"/>
<url>2022-06-20/python/data-structure/sorted-containers/01-install-and-sortedlist/</url>
<content type="html"><![CDATA[<h1 id="Install"><a href="#Install" class="headerlink" title="Install"></a>Install</h1><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pip <span class="token function">install</span> sortedcontainers<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h1 id="SortedList"><a href="#SortedList" class="headerlink" title="SortedList"></a>SortedList</h1><p>在插入、删除元素后仍然可以自动维护序列的顺序。</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">from</span> sortedcontainers <span class="token keyword">import</span> SortedListsl <span class="token operator">=</span> SortedList<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><h2 id="插入元素"><a href="#插入元素" class="headerlink" title="插入元素"></a>插入元素</h2><ol><li>插入一整个列表:<code>SortedList.update(List[val1, val2, ...])</code></li><li>插入一个元素:<code>SortedList.add(value)</code></li></ol><h2 id="删除元素"><a href="#删除元素" class="headerlink" title="删除元素"></a>删除元素</h2><ol><li>按照元素值删除:<code>SortedList.remove(value)</code>, <code>SortedList.discard(value)</code></li><li>按照元素索引删除:<code>SortedList.pop([index])</code>, <code>SortedList.__delitem__(index)</code>, <code>del SortedList[index]</code></li><li>清空列表:<code>SortedList.clear()</code></li></ol><h2 id="随机访问-O-log-n-复杂度"><a href="#随机访问-O-log-n-复杂度" class="headerlink" title="随机访问 - O(log n) 复杂度"></a>随机访问 - <code>O(log n)</code> 复杂度</h2><ol><li>查询元素是否存在:<code>SortedList.__contains__(value)</code>, <code>value in SortedList</code></li><li>查询元素索引:<code>SortedList.index(value)</code></li><li>查询元素数量:<code>SortedList.count(value)</code></li><li>二分查找元素插入位置:<code>SortedList.bisect_left(value)</code>, <code>SortedList.bisect_right(value)</code></li><li>切片:<code>SortedList.__getitem__(index)</code>, <code>SortedList[start:end]</code></li></ol><h2 id="迭代器"><a href="#迭代器" class="headerlink" title="迭代器"></a>迭代器</h2><ol><li>创建迭代器:<code>SortedList.__iter__()</code>, <code>iter(SortedList)</code></li><li>反向迭代:<code>SortedList.__reversed__()</code>, <code>reversed(SortedList)</code></li><li>根据值进行切片:<code>SortedList.irange(start, end)</code></li><li>根据索引进行切片:<code>SortedList.islice(start, end)</code></li></ol><h2 id="运算符操作"><a href="#运算符操作" class="headerlink" title="运算符操作"></a>运算符操作</h2><ol><li>数组加和,拼接后排序操作:<code>SortedList.__add__()</code>, <code>SortedList1 + SortedList2</code></li><li>数组数乘,倍增后排序操作:<code>SortedList.__mul__()</code>, <code>SortedList * num</code></li></ol><h2 id="不支持的List类的api"><a href="#不支持的List类的api" class="headerlink" title="不支持的List类的api"></a>不支持的List类的api</h2><ol><li>赋值操作 -> add</li></ol> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># sl[0] = 1</span><span class="token keyword">del</span> sl<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>sl<span class="token punctuation">.</span>add<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ol start="2"><li>反序api:reverse -> reversed</li></ol> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># sl.reverse()</span><span class="token builtin">reversed</span><span class="token punctuation">(</span>sl<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ol start="3"><li>增加元素api:append -> add</li></ol> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># sl.append(value)</span>sl<span class="token punctuation">.</span>add<span class="token punctuation">(</span>value<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ol start="4"><li>合并其他数组api:extend -> update</li></ol> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># sl.extend([val1, val2, ...])</span>sl<span class="token punctuation">.</span>update<span class="token punctuation">(</span><span class="token punctuation">[</span>val1<span class="token punctuation">,</span> val2<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ol start="5"><li>插入元素到指定位置api:insert -> add</li></ol> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># sl.insert(5, value)</span>sl<span class="token punctuation">.</span>add<span class="token punctuation">(</span>value<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre>]]></content>
<categories>
<category> Python </category>
</categories>
<tags>
<tag> Data Structure </tag>
<tag> Sorted Containers </tag>
</tags>
</entry>
<entry>
<title>Shell 基础知识 06 输入输出重定向</title>
<link href="2022-05-28/shell-ji-chu-zhi-shi-06-shu-ru-shu-chu-chong-ding-xiang/"/>
<url>2022-05-28/shell-ji-chu-zhi-shi-06-shu-ru-shu-chu-chong-ding-xiang/</url>
<content type="html"><![CDATA[<ol><li>输出重定向,覆盖版本</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">command1 <span class="token operator">></span> file1<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol><li>输出重定向,追加版本</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">command1 <span class="token operator">>></span> file1<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol><li>输入重定向,两个版本</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">command2 <span class="token operator"><</span> file1command2 <span class="token operator"><<</span> file2<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ol><li>输入输出流</li></ol><ul><li>标准输入文件:0,stdin</li><li>标准输出文件:1,stdout</li><li>标准错误文件:2,stderr</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># stdout 重定向到 file</span><span class="token builtin class-name">command</span> <span class="token operator">></span> <span class="token function">file</span><span class="token comment"># stdin 重定向到 file</span><span class="token builtin class-name">command</span> <span class="token operator"><</span> <span class="token function">file</span><span class="token comment"># stderr 重定向到 file</span><span class="token builtin class-name">command</span> <span class="token operator"><span class="token file-descriptor important">2</span>></span>file<span class="token comment"># stderr 追加到 file 文件末尾</span><span class="token builtin class-name">command</span> <span class="token operator"><span class="token file-descriptor important">2</span>>></span>file<span class="token comment"># stdout 和 stderr 合并后重定向到 file</span><span class="token builtin class-name">command</span> <span class="token operator">></span> <span class="token function">file</span> <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&1</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Shell </tag>
</tags>
</entry>
<entry>
<title>Shell 基础知识 04 流程控制</title>
<link href="2022-05-28/shell-ji-chu-zhi-shi-04-liu-cheng-kong-zhi/"/>
<url>2022-05-28/shell-ji-chu-zhi-shi-04-liu-cheng-kong-zhi/</url>
<content type="html"><![CDATA[<ol><li>if 语句</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token keyword">if</span> condition1<span class="token keyword">then</span> command1<span class="token keyword">elif</span> condition2<span class="token keyword">then</span> command2<span class="token keyword">else</span> command3<span class="token keyword">fi</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="2"><li>for 语句</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token keyword">for</span> <span class="token for-or-select variable">var</span> <span class="token keyword">in</span> item1, item2, <span class="token punctuation">..</span>., itemN<span class="token keyword">do</span> command1 command2 <span class="token punctuation">..</span>. commandN<span class="token keyword">done</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="3"><li>while 语句</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token keyword">while</span> condition<span class="token keyword">do</span> <span class="token builtin class-name">command</span><span class="token keyword">done</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><ol start="4"><li>无限循环的两个写法</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token keyword">while</span> <span class="token boolean">true</span><span class="token keyword">do</span> <span class="token builtin class-name">command</span><span class="token keyword">done</span><span class="token keyword">for</span> <span class="token variable"><span class="token punctuation">((</span> <span class="token punctuation">;</span> <span class="token punctuation">;</span> <span class="token punctuation">))</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="5"><li>until 语句</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token assign-left variable">a</span><span class="token operator">=</span><span class="token number">0</span><span class="token keyword">until</span> condition<span class="token keyword">do</span> <span class="token builtin class-name">command</span><span class="token keyword">done</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="6"><li>case 语句</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token keyword">case</span> val <span class="token keyword">in</span> val1<span class="token punctuation">)</span> command11 command12 <span class="token punctuation">;</span><span class="token punctuation">;</span> val2<span class="token punctuation">)</span> command21 command22 <span class="token punctuation">;</span><span class="token punctuation">;</span><span class="token keyword">esac</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="7"><li>break/continue 语句</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>while:<span class="token keyword">do</span> <span class="token builtin class-name">echo</span> -n <span class="token string">"输入 1 到 5 之间的数字: "</span> <span class="token builtin class-name">read</span> aNum <span class="token keyword">case</span> <span class="token variable">$aNum</span> <span class="token keyword">in</span> <span class="token number">1</span><span class="token operator">|</span><span class="token number">2</span><span class="token operator">|</span><span class="token number">3</span><span class="token operator">|</span><span class="token number">4</span><span class="token operator">|</span><span class="token number">5</span><span class="token punctuation">)</span> <span class="token builtin class-name">echo</span> <span class="token string">"你输入的数字为 <span class="token variable">$aNum</span>!"</span> <span class="token punctuation">;</span><span class="token punctuation">;</span> <span class="token number">6</span><span class="token operator">|</span><span class="token number">7</span><span class="token operator">|</span><span class="token number">8</span><span class="token operator">|</span><span class="token number">9</span><span class="token operator">|</span><span class="token number">10</span><span class="token punctuation">)</span> <span class="token builtin class-name">echo</span> <span class="token string">"你输入的数字为 <span class="token variable">$aNum</span>!"</span> <span class="token builtin class-name">break</span> <span class="token punctuation">;</span><span class="token punctuation">;</span> *<span class="token punctuation">)</span> <span class="token builtin class-name">echo</span> <span class="token string">"你输入的数字不是 1 到 5 之间的!"</span> <span class="token builtin class-name">continue</span> <span class="token builtin class-name">echo</span> <span class="token string">"游戏结束"</span> <span class="token punctuation">;</span><span class="token punctuation">;</span> <span class="token number">6</span> <span class="token keyword">esac</span><span class="token keyword">done</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Shell </tag>
</tags>
</entry>
<entry>
<title>Shell 基础知识 03 运算符</title>
<link href="2022-05-28/shell-ji-chu-zhi-shi-03-yun-suan-fu/"/>
<url>2022-05-28/shell-ji-chu-zhi-shi-03-yun-suan-fu/</url>
<content type="html"><![CDATA[<h1 id="算术运算符"><a href="#算术运算符" class="headerlink" title="算术运算符"></a>算术运算符</h1><p>原生的shell语言不支持数学计算,会将数学运算符和 <code>expr</code> 命令结合使用:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token assign-left variable">val</span><span class="token operator">=</span><span class="token variable"><span class="token variable">`</span><span class="token function">expr</span> <span class="token number">2</span> + <span class="token number">2</span><span class="token variable">`</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol><li>支持加、减、乘、除、取余运算</li><li>条件表达式要放在方括号之间,并且注意要有空格</li><li>乘号前面必须加反斜杠才能执行运算</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token variable">$a</span> <span class="token operator">!=</span> <span class="token variable">$b</span> <span class="token punctuation">]</span><span class="token keyword">then</span> <span class="token builtin class-name">echo</span> <span class="token string">"a 不等于 b"</span><span class="token keyword">fi</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><h1 id="关系运算符"><a href="#关系运算符" class="headerlink" title="关系运算符"></a>关系运算符</h1><table><thead><tr><th align="left">运算符</th><th>说明</th></tr></thead><tbody><tr><td align="left">-eq</td><td>检查是否相等</td></tr><tr><td align="left">-ne</td><td>检查是否不相等</td></tr><tr><td align="left">-gt</td><td>大于</td></tr><tr><td align="left">-lt</td><td>小于</td></tr><tr><td align="left">-ge</td><td>大于等于</td></tr><tr><td align="left">-le</td><td>小于等于</td></tr></tbody></table><h1 id="布尔运算符"><a href="#布尔运算符" class="headerlink" title="布尔运算符"></a>布尔运算符</h1><table><thead><tr><th align="left">运算符</th><th>说明</th></tr></thead><tbody><tr><td align="left">!</td><td>非运算</td></tr><tr><td align="left">-a</td><td>或运算</td></tr><tr><td align="left">-o</td><td>与运算</td></tr></tbody></table><h1 id="逻辑运算符"><a href="#逻辑运算符" class="headerlink" title="逻辑运算符"></a>逻辑运算符</h1><table><thead><tr><th align="left">运算符</th><th>说明</th></tr></thead><tbody><tr><td align="left">&&</td><td>逻辑与运算</td></tr><tr><td align="left">||</td><td>逻辑或运算</td></tr></tbody></table><h1 id="字符串运算符"><a href="#字符串运算符" class="headerlink" title="字符串运算符"></a>字符串运算符</h1><table><thead><tr><th align="left">运算符</th><th>说明</th></tr></thead><tbody><tr><td align="left">=</td><td>检查字符串是否相等</td></tr><tr><td align="left">!=</td><td>检查字符串是否不相等</td></tr><tr><td align="left">-z</td><td>检查字符串长度是否为 0</td></tr><tr><td align="left">-n</td><td>检查字符串长度是否不为 0</td></tr><tr><td align="left">$</td><td>检查字符串是否不为空</td></tr></tbody></table>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Shell </tag>
</tags>
</entry>
<entry>
<title>Shell 基础知识 05 函数和传参</title>
<link href="2022-05-28/shell-ji-chu-zhi-shi-05-han-shu-yu-chuan-can/"/>
<url>2022-05-28/shell-ji-chu-zhi-shi-05-han-shu-yu-chuan-can/</url>
<content type="html"><![CDATA[<h1 id="脚本参数"><a href="#脚本参数" class="headerlink" title="脚本参数"></a>脚本参数</h1><ol><li><p>执行脚本时传入的参数,按照传参的顺序,在脚本内可通过 <code>$n</code> 的形式获取。</p></li><li><p><code>n</code> 从 0 开始计数,但参数从 1 开始计数</p></li><li><p><code>$0</code> 为执行的文件名</p></li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token builtin class-name">echo</span> <span class="token string">"<span class="token variable">$0</span>"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol start="4"><li><p><code>$#</code> 为传递到脚本的参数个数</p></li><li><p><code>$*</code> 使用单个字符串一起显示传递给脚本的参数</p></li><li><p><code>$@</code> 将每个参数分别以字符串形式显示</p></li><li><p><code>$$</code> 为脚本运行的当前进程 ID</p></li></ol><h1 id="函数定义"><a href="#函数定义" class="headerlink" title="函数定义"></a>函数定义</h1><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token punctuation">[</span> <span class="token keyword">function</span> <span class="token punctuation">]</span> funname <span class="token punctuation">[</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">{</span> action<span class="token punctuation">;</span> <span class="token punctuation">[</span>return int<span class="token punctuation">;</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol><li><p>return 数值 (0-255)</p></li><li><p>返回值的调用:在调用该函数后,使用<code>$?</code>获得</p></li><li><p>函数内部传参也使用 <code>$n</code> 进行获取</p></li></ol>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Shell </tag>
</tags>
</entry>
<entry>
<title>Shell 基础知识 02 字符串与数组</title>
<link href="2022-05-28/shell-ji-chu-zhi-shi-02-zi-fu-chuan-yu-shu-zu/"/>
<url>2022-05-28/shell-ji-chu-zhi-shi-02-zi-fu-chuan-yu-shu-zu/</url>
<content type="html"><![CDATA[<h1 id="字符串"><a href="#字符串" class="headerlink" title="字符串"></a>字符串</h1><p>字符串可以用单引号,双引号(推荐使用)括起来,也可以不用引号</p><h2 id="单引号"><a href="#单引号" class="headerlink" title="单引号"></a>单引号</h2><p>无法输出变量,无法输出转义字符的单引号,不推荐使用</p><h2 id="双引号"><a href="#双引号" class="headerlink" title="双引号"></a>双引号</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token assign-left variable">name</span><span class="token operator">=</span><span class="token string">"123"</span><span class="token assign-left variable">str</span><span class="token operator">=</span><span class="token string">"my name is <span class="token entity" title="\"">\"</span><span class="token variable">$name</span><span class="token entity" title="\"">\"</span>! <span class="token entity" title="\n">\n</span>"</span><span class="token builtin class-name">echo</span> -e <span class="token variable">$str</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><p>可以使用变量和转义字符,推荐使用</p><h2 id="字符串拼接"><a href="#字符串拼接" class="headerlink" title="字符串拼接"></a>字符串拼接</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token assign-left variable">name</span><span class="token operator">=</span><span class="token string">"123"</span><span class="token assign-left variable">greeting</span><span class="token operator">=</span><span class="token string">"hello, "</span><span class="token variable">$name</span><span class="token string">"!"</span><span class="token builtin class-name">echo</span> <span class="token variable">$greeting</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h2 id="字符串长度"><a href="#字符串长度" class="headerlink" title="字符串长度"></a>字符串长度</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token assign-left variable">str</span><span class="token operator">=</span><span class="token string">"abcde"</span><span class="token builtin class-name">echo</span> <span class="token variable">${<span class="token operator">#</span>str}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><h2 id="提取子字符串"><a href="#提取子字符串" class="headerlink" title="提取子字符串"></a>提取子字符串</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token assign-left variable">str</span><span class="token operator">=</span><span class="token string">"abcde"</span>eco <span class="token variable">${str<span class="token operator">:</span>1<span class="token operator">:</span>3}</span> <span class="token comment"># 输出 bcd</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ol><li>第一个索引为 0</li><li>索引区间左右皆闭</li></ol><h2 id="查找子字符串"><a href="#查找子字符串" class="headerlink" title="查找子字符串"></a>查找子字符串</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token assign-left variable">string</span><span class="token operator">=</span><span class="token string">"I am a good person"</span><span class="token builtin class-name">echo</span> <span class="token variable"><span class="token variable">`</span><span class="token function">expr</span> index <span class="token string">"<span class="token variable">$string</span>"</span> io<span class="token variable">`</span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><p>查找字符 <code>i</code> 或 <code>o</code> 出现的第一个位置</p><h1 id="数组"><a href="#数组" class="headerlink" title="数组"></a>数组</h1><p>bash 只支持一维数组。</p><h2 id="数组定义"><a href="#数组定义" class="headerlink" title="数组定义"></a>数组定义</h2><ol><li>数组的初始化</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token assign-left variable">arr_1</span><span class="token operator">=</span><span class="token punctuation">(</span>val_1, val_2, val3<span class="token punctuation">)</span><span class="token assign-left variable">arr_2</span><span class="token operator">=</span><span class="token punctuation">(</span> val_1 val_2 val_3<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="2"><li>数组单个元素赋值</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">arr_1<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">=</span>val_0<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="数组读取"><a href="#数组读取" class="headerlink" title="数组读取"></a>数组读取</h2><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token assign-left variable">val_0</span><span class="token operator">=</span><span class="token variable">${arr_1<span class="token punctuation">[</span>0<span class="token punctuation">]</span>}</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>使用<code>@</code>可以获取数组中所有的元素</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token builtin class-name">echo</span> <span class="token variable">${arr_1<span class="token punctuation">[</span>@<span class="token punctuation">]</span>}</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="数组长度"><a href="#数组长度" class="headerlink" title="数组长度"></a>数组长度</h2><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># 获取数组长度</span><span class="token assign-left variable">length</span><span class="token operator">=</span><span class="token variable">${<span class="token operator">#</span>arr_1<span class="token punctuation">[</span>@<span class="token punctuation">]</span>}</span><span class="token comment"># 获取单个元素长度</span><span class="token assign-left variable">length</span><span class="token operator">=</span><span class="token variable">${<span class="token operator">#</span>arr_1<span class="token punctuation">[</span>0<span class="token punctuation">]</span>}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Shell </tag>
</tags>
</entry>
<entry>
<title>Shell 基础知识 01 运行环境和变量</title>
<link href="2022-05-28/shell-ji-chu-zhi-shi-01-yun-xing-huan-jing-he-bian-liang/"/>
<url>2022-05-28/shell-ji-chu-zhi-shi-01-yun-xing-huan-jing-he-bian-liang/</url>
<content type="html"><![CDATA[<h1 id="Shell-运行环境"><a href="#Shell-运行环境" class="headerlink" title="Shell 运行环境"></a>Shell 运行环境</h1><ol><li>Linux 系统常用的shell</li></ol><ul><li>/usr/bin/sh, /bin/sh</li><li>/bin/bash</li></ul><h1 id="Shell-脚本"><a href="#Shell-脚本" class="headerlink" title="Shell 脚本"></a>Shell 脚本</h1><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token shebang important">#!/bin/bash</span><span class="token builtin class-name">echo</span> <span class="token string">"hello world!"</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ol><li>作为可执行程序使用脚本推荐的 <code>shell</code> 解释器运行</li></ol><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token function">chmod</span> +x ./test.sh./test.sh<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><ul><li>如果运行 <code>test.sh</code>,系统会到 <code>Path</code> 里面去找这个文件,会出问题</li></ul><ol start="2"><li>作为<code>shell</code> 解释器的参数运行</li></ol><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell">/bin/sh test.sh<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h1 id="Shell-变量"><a href="#Shell-变量" class="headerlink" title="Shell 变量"></a>Shell 变量</h1><h2 id="变量定义"><a href="#变量定义" class="headerlink" title="变量定义"></a>变量定义</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token assign-left variable">name</span><span class="token operator">=</span><span class="token string">"balabala"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol><li>变量名和等号之间无空格</li><li>其他的规则和其他语言变量的命名规则相同</li><li><code>help</code> 命令可以查看 shell 的保留关键字</li><li>只读变量:</li></ol><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token assign-left variable">name</span><span class="token operator">=</span><span class="token string">"balabala"</span><span class="token builtin class-name">readonly</span> name<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><h2 id="变量使用"><a href="#变量使用" class="headerlink" title="变量使用"></a>变量使用</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token builtin class-name">echo</span> <span class="token variable">${name}</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol><li>使用 <code>$</code> 和可选的花括号将被使用的变量标识出来</li></ol><h2 id="变量删除"><a href="#变量删除" class="headerlink" title="变量删除"></a>变量删除</h2><pre class="line-numbers language-shell" data-language="shell"><code class="language-shell"><span class="token builtin class-name">unset</span> name<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol><li>unset 命令不能删除只读变量</li></ol><h2 id="变量类型"><a href="#变量类型" class="headerlink" title="变量类型"></a>变量类型</h2><ol><li>局部变量:作用域仅为被调用的脚本</li><li>环境变量:所有程序都可访问到的变量,和操作系统挂钩</li><li>shell 变量</li></ol><h1 id="注释"><a href="#注释" class="headerlink" title="注释"></a>注释</h1><ol><li>单行注释使用 <code>#</code></li><li>多行注释</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">:<span class="token operator"><<</span><span class="token string">'comment 1comment 2comment 3'</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Shell </tag>
</tags>
</entry>
<entry>
<title>Python Functools</title>
<link href="2022-05-20/python/data-structure/python-gao-ji-bian-cheng-02-functools/"/>
<url>2022-05-20/python/data-structure/python-gao-ji-bian-cheng-02-functools/</url>
<content type="html"><![CDATA[<p>该模块设计的目的是包含一些面向函数式编程的接口,具有两个功能:<br>对函数执行前进行修饰,将函数作为返回值。任何可调用对象都符合该模块的设计理念。</p><h3 id="1-cache-user-function"><a href="#1-cache-user-function" class="headerlink" title="1. cache(user_function)"></a>1. cache(user_function)</h3><p>对函数进行缓存,常用于 DFS 的空间换时间 trick</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token decorator annotation punctuation">@cache</span><span class="token keyword">def</span> <span class="token function">factorial</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">return</span> n <span class="token operator">*</span> factorial<span class="token punctuation">(</span>n<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token keyword">if</span> n <span class="token keyword">else</span> <span class="token number">1</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h3 id="2-cmp-to-key-func"><a href="#2-cmp-to-key-func" class="headerlink" title="2. cmp_to_key(func)"></a>2. cmp_to_key(func)</h3><ol><li><p>提供一个定义复杂排序条件的函数接口。python 3 的 sort 函数只支持从单个元素角度定义排序条件,该函数可以从两个元素角度定义排序条件。</p></li><li><p>返回值为严格的 +1, -1</p></li></ol><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">def</span> <span class="token function">cmp_function</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">return</span> <span class="token number">1</span> <span class="token keyword">if</span> x <span class="token operator">+</span> y <span class="token operator">></span> y <span class="token operator">+</span> x <span class="token keyword">else</span> <span class="token operator">-</span><span class="token number">1</span><span class="token builtin">sorted</span><span class="token punctuation">(</span>iterable<span class="token punctuation">,</span> key<span class="token operator">=</span>cmp_to_key<span class="token punctuation">(</span>cmp_function<span class="token punctuation">)</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><h3 id="3-partial-func-args-keywords"><a href="#3-partial-func-args-keywords" class="headerlink" title="3. partial(func, /, *args, **keywords)"></a>3. partial(func, /, *args, **keywords)</h3><ol><li><p>将原函数的一些参数固定为值,返回新函数。</p></li><li><p>在新函数被调用时,如果传入的参数与原函数中被固定的参数值冲突,会进行覆写。</p></li></ol><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">def</span> <span class="token function">partial</span><span class="token punctuation">(</span>func<span class="token punctuation">,</span> <span class="token operator">/</span><span class="token punctuation">,</span> <span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">**</span>keywords<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">def</span> <span class="token function">new_func</span><span class="token punctuation">(</span><span class="token operator">*</span>fargs<span class="token punctuation">,</span> <span class="token operator">**</span>fkeywords<span class="token punctuation">)</span><span class="token punctuation">:</span> newkeywords <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token operator">**</span>keywords<span class="token punctuation">,</span> <span class="token operator">**</span>fkeywords<span class="token punctuation">}</span> <span class="token keyword">return</span> func<span class="token punctuation">(</span><span class="token operator">*</span>args<span class="token punctuation">,</span> <span class="token operator">*</span>fargs<span class="token punctuation">,</span> <span class="token operator">**</span>newkeywords<span class="token punctuation">)</span> new_func<span class="token punctuation">.</span>func <span class="token operator">=</span> func new_func<span class="token punctuation">.</span>args <span class="token operator">=</span> args new_func<span class="token punctuation">.</span>keywords <span class="token operator">=</span> keywords <span class="token keyword">return</span> newfunc<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="4-reduce-function-iterable-initializer"><a href="#4-reduce-function-iterable-initializer" class="headerlink" title="4. reduce(function, iterable[, initializer])"></a>4. reduce(function, iterable[, initializer])</h3><ol><li>将一个可迭代对象的元素从左向右,依次输入到函数对象中。</li><li>如果初始化元素为空(默认),则把前两个元素先输入到函数对象进行结果的初始化。</li></ol><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">def</span> <span class="token function">reduce</span><span class="token punctuation">(</span>function<span class="token punctuation">,</span> iterable<span class="token punctuation">,</span> initializer<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span> it <span class="token operator">=</span> <span class="token builtin">iter</span><span class="token punctuation">(</span>iterable<span class="token punctuation">)</span> <span class="token keyword">if</span> initializer <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span> value <span class="token operator">=</span> <span class="token builtin">next</span><span class="token punctuation">(</span>it<span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> value <span class="token operator">=</span> initializer <span class="token keyword">for</span> element <span class="token keyword">in</span> it<span class="token punctuation">:</span> value <span class="token operator">=</span> function<span class="token punctuation">(</span>value<span class="token punctuation">,</span> element<span class="token punctuation">)</span> <span class="token keyword">return</span> value<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Python </tag>
</tags>
</entry>
<entry>
<title>Pytorch 编程常用代码 - 模型参数</title>
<link href="2022-04-19/pytorch-bian-cheng-chang-yong-dai-ma-mo-xing-can-shu/"/>
<url>2022-04-19/pytorch-bian-cheng-chang-yong-dai-ma-mo-xing-can-shu/</url>
<content type="html"><![CDATA[]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Pytorch </tag>
</tags>
</entry>
<entry>
<title>Linux 命令 rsync</title>
<link href="2022-04-19/linux-ming-ling-rsync/"/>
<url>2022-04-19/linux-ming-ling-rsync/</url>
<content type="html"><![CDATA[<h1 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h1><ol><li>是一个远程数据同步命令,支持通过 LAN/WAN 快速同步多台主机之间的文件。</li><li>支持断点续传和增量传递,通过比较 source 和 destination 之间的文件差异实现此功能。</li></ol><h1 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h1><ol><li><p>拷贝本地文件</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rsync</span> <span class="token punctuation">[</span>OPTION<span class="token punctuation">]</span><span class="token punctuation">..</span>. SRC DEST<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rsync</span> <span class="token punctuation">[</span>OPTION<span class="token punctuation">]</span><span class="token punctuation">..</span>. SRC <span class="token punctuation">[</span><span class="token environment constant">USER</span>@<span class="token punctuation">]</span>host:DEST<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rsync</span> <span class="token punctuation">[</span>OPTION<span class="token punctuation">]</span><span class="token punctuation">..</span>. <span class="token punctuation">[</span><span class="token environment constant">USER</span>@<span class="token punctuation">]</span>HOST:SRC DEST<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>从远程rsync<strong>服务器</strong>中拷贝文件到本地机。</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rsync</span> <span class="token punctuation">[</span>OPTION<span class="token punctuation">]</span><span class="token punctuation">..</span>. <span class="token punctuation">[</span><span class="token environment constant">USER</span>@<span class="token punctuation">]</span>HOST::SRC DEST<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>从本地机器拷贝文件到远程rsync<strong>服务器</strong>中。</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rsync</span> <span class="token punctuation">[</span>OPTION<span class="token punctuation">]</span><span class="token punctuation">..</span>. SRC <span class="token punctuation">[</span><span class="token environment constant">USER</span>@<span class="token punctuation">]</span>HOST::DEST<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>列远程机的文件列表。</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rsync</span> <span class="token punctuation">[</span>OPTION<span class="token punctuation">]</span><span class="token punctuation">..</span>. rsync://<span class="token punctuation">[</span><span class="token environment constant">USER</span>@<span class="token punctuation">]</span>HOST<span class="token punctuation">[</span>:PORT<span class="token punctuation">]</span>/SRC <span class="token punctuation">[</span>DEST<span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li></ol><h1 id="常用参数"><a href="#常用参数" class="headerlink" title="常用参数"></a>常用参数</h1><ol><li><p>输出模式</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">-v, --verbose 详细模式输出。-q, --quiet 精简输出模式。<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></li><li><p>归档模式</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>压缩传输</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">-z, --compress 对备份的文件在传输时进行压缩处理。<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>断点续传</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">--P, --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li></ol><h1 id="常用命令组合"><a href="#常用命令组合" class="headerlink" title="常用命令组合"></a>常用命令组合</h1><ol><li>备份命令 <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rsync</span> -avzP --progress work@172.16.78.192:/www/* /databack/experiment/rsync<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li></ol><h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h1><ol><li><a href="https://wangchujiang.com/linux-command/c/rsync.html">rsync 命令,Linux rsync 命令详解:远程数据同步工具 - Linux 命令搜索引擎</a></li></ol>]]></content>
<categories>
<category> Engineering </category>
</categories>
<tags>
<tag> Linux Command </tag>
</tags>
</entry>
<entry>
<title>Pytorch 编程常用代码 - 基本配置与张量</title>
<link href="2022-04-18/pytorch-bian-cheng-chang-yong-dai-ma-ji-ben-pei-zhi-yu-zhang-liang/"/>
<url>2022-04-18/pytorch-bian-cheng-chang-yong-dai-ma-ji-ben-pei-zhi-yu-zhang-liang/</url>
<content type="html"><![CDATA[<h1 id="基本配置"><a href="#基本配置" class="headerlink" title="基本配置"></a>基本配置</h1><h2 id="导入包和版本查询"><a href="#导入包和版本查询" class="headerlink" title="导入包和版本查询"></a>导入包和版本查询</h2><ul><li>显示 <code>torch</code> 的版本<pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">import</span> torch<span class="token keyword">import</span> torch<span class="token punctuation">.</span>nn <span class="token keyword">as</span> nn<span class="token keyword">import</span> torchvision<span class="token keyword">print</span><span class="token punctuation">(</span>torch<span class="token punctuation">.</span>__version__<span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>torch<span class="token punctuation">.</span>version<span class="token punctuation">.</span>cuda<span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>torch<span class="token punctuation">.</span>backends<span class="token punctuation">.</span>cudnn<span class="token punctuation">.</span>version<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>get_device_name<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li></ul><h2 id="可复现性"><a href="#可复现性" class="headerlink" title="可复现性"></a>可复现性</h2><ul><li>固定 <code>torch</code> 和 <code>numpy</code> 的随机数种子<pre class="line-numbers language-python" data-language="python"><code class="language-python">np<span class="token punctuation">.</span>random<span class="token punctuation">.</span>seed<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>torch<span class="token punctuation">.</span>manual_seed<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>manual_seed_all<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>torch<span class="token punctuation">.</span>backends<span class="token punctuation">.</span>cudnn<span class="token punctuation">.</span>deterministic <span class="token operator">=</span> <span class="token boolean">True</span>torch<span class="token punctuation">.</span>backends<span class="token punctuation">.</span>cudnn<span class="token punctuation">.</span>benchmark <span class="token operator">=</span> <span class="token boolean">False</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li></ul><h2 id="设置显卡"><a href="#设置显卡" class="headerlink" title="设置显卡"></a>设置显卡</h2><ul><li><p>单张显卡</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">device <span class="token operator">=</span> torch<span class="token punctuation">.</span>device<span class="token punctuation">(</span><span class="token string">'cuda'</span> <span class="token keyword">if</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>is_available<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">else</span> <span class="token string">'cpu'</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>多张显卡</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">import</span> osos<span class="token punctuation">.</span>environ<span class="token punctuation">[</span><span class="token string">'CUDA_VISIBLE_DEVICES'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">'0,1'</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></li><li><p>清除显存</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>empty_cache<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li></ul><h1 id="张量处理"><a href="#张量处理" class="headerlink" title="张量处理"></a>张量处理</h1><h2 id="张量的数据类型"><a href="#张量的数据类型" class="headerlink" title="张量的数据类型"></a>张量的数据类型</h2><ul><li><p><code>Pytorch</code> 有 9 种张量类型</p><p><img src="/2022-04-18/pytorch-bian-cheng-chang-yong-dai-ma-ji-ben-pei-zhi-yu-zhang-liang/tensor_type.jpg" alt="`Pytorch` 有 9 种张量类型"></p></li></ul><h2 id="张量的基本信息"><a href="#张量的基本信息" class="headerlink" title="张量的基本信息"></a>张量的基本信息</h2><ul><li><p>张量的类型,数据类型,形状,维度数量</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>randn<span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>tensor<span class="token punctuation">.</span><span class="token builtin">type</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>tensor<span class="token punctuation">.</span>dtype<span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>tensor<span class="token punctuation">.</span>size<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> tensor<span class="token punctuation">.</span>shape<span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>tensor<span class="token punctuation">.</span>dim<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p>命名张量,给维度起名字,防止出错</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># 在PyTorch 1.3之前,需要使用注释</span><span class="token comment"># Tensor[N, C, H, W]</span>images <span class="token operator">=</span> torch<span class="token punctuation">.</span>randn<span class="token punctuation">(</span><span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">56</span><span class="token punctuation">,</span> <span class="token number">56</span><span class="token punctuation">)</span>images<span class="token punctuation">.</span><span class="token builtin">sum</span><span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span>images<span class="token punctuation">.</span>select<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">,</span> index<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token comment"># PyTorch 1.3之后</span>NCHW <span class="token operator">=</span> <span class="token punctuation">[</span>‘N’<span class="token punctuation">,</span> ‘C’<span class="token punctuation">,</span> ‘H’<span class="token punctuation">,</span> ‘W’<span class="token punctuation">]</span>images <span class="token operator">=</span> torch<span class="token punctuation">.</span>randn<span class="token punctuation">(</span><span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">56</span><span class="token punctuation">,</span> <span class="token number">56</span><span class="token punctuation">,</span> names<span class="token operator">=</span>NCHW<span class="token punctuation">)</span>images<span class="token punctuation">.</span><span class="token builtin">sum</span><span class="token punctuation">(</span><span class="token string">'C'</span><span class="token punctuation">)</span>images<span class="token punctuation">.</span>select<span class="token punctuation">(</span><span class="token string">'C'</span><span class="token punctuation">,</span> index<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token comment"># 也可以这么设置</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>rand<span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span>names<span class="token operator">=</span><span class="token punctuation">(</span><span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'N'</span><span class="token punctuation">,</span> <span class="token string">'H'</span><span class="token punctuation">,</span> <span class="token string">'W'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token comment"># 使用align_to可以对维度方便地排序</span>tensor <span class="token operator">=</span> tensor<span class="token punctuation">.</span>align_to<span class="token punctuation">(</span><span class="token string">'N'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'H'</span><span class="token punctuation">,</span> <span class="token string">'W'</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li></ul><h2 id="数据类型转换"><a href="#数据类型转换" class="headerlink" title="数据类型转换"></a>数据类型转换</h2><ul><li><p>默认类型转换</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># 设置默认类型,pytorch中的FloatTensor远远快于DoubleTensor</span>torch<span class="token punctuation">.</span>set_default_tensor_type<span class="token punctuation">(</span>torch<span class="token punctuation">.</span>FloatTensor<span class="token punctuation">)</span><span class="token comment"># 类型转换</span>tensor <span class="token operator">=</span> tensor<span class="token punctuation">.</span>cuda<span class="token punctuation">(</span><span class="token punctuation">)</span>tensor <span class="token operator">=</span> tensor<span class="token punctuation">.</span>cpu<span class="token punctuation">(</span><span class="token punctuation">)</span>tensor <span class="token operator">=</span> tensor<span class="token punctuation">.</span><span class="token builtin">float</span><span class="token punctuation">(</span><span class="token punctuation">)</span>tensor <span class="token operator">=</span> tensor<span class="token punctuation">.</span><span class="token builtin">long</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p><code>torch.Tensor</code> 与 <code>np.ndarray</code> 转换</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">ndarray <span class="token operator">=</span> tensor<span class="token punctuation">.</span>cpu<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>numpy<span class="token punctuation">(</span><span class="token punctuation">)</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>from_numpy<span class="token punctuation">(</span>ndarray<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token builtin">float</span><span class="token punctuation">(</span><span class="token punctuation">)</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>from_numpy<span class="token punctuation">(</span>ndarray<span class="token punctuation">.</span>copy<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token builtin">float</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># If ndarray has negative stride.</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre></li></ul><h2 id="张量的形状操作"><a href="#张量的形状操作" class="headerlink" title="张量的形状操作"></a>张量的形状操作</h2><ul><li><p>张量形变</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># 在将卷积层输入全连接层的情况下通常需要对张量做形变处理,</span><span class="token comment"># 相比torch.view,torch.reshape可以自动处理输入张量不连续的情况。</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>rand<span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">)</span>shape <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>reshape<span class="token punctuation">(</span>tensor<span class="token punctuation">,</span> shape<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p>打乱顺序</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">tensor <span class="token operator">=</span> tensor<span class="token punctuation">[</span>torch<span class="token punctuation">.</span>randperm<span class="token punctuation">(</span>tensor<span class="token punctuation">.</span>size<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">]</span> <span class="token comment"># 打乱第一个维度</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>水平翻转</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># pytorch不支持tensor[::-1]这样的负步长操作,水平翻转可以通过张量索引实现</span><span class="token comment"># 假设张量的维度为[N, D, H, W].</span>tensor <span class="token operator">=</span> tensor<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">,</span><span class="token punctuation">:</span><span class="token punctuation">,</span><span class="token punctuation">:</span><span class="token punctuation">,</span>torch<span class="token punctuation">.</span>arange<span class="token punctuation">(</span>tensor<span class="token punctuation">.</span>size<span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token builtin">long</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre></li><li><p>张量复制</p><table><thead><tr><th align="left">Operation</th><th>New/Shared memory</th><th>Still in computation graph</th></tr></thead><tbody><tr><td align="left">tensor.clone()</td><td>New</td><td>Yes</td></tr><tr><td align="left">tensor.detach()</td><td>Shared</td><td>No</td></tr><tr><td align="left">tensor.detach.clone()()</td><td>New</td><td>No</td></tr></tbody></table></li></ul><ul><li><p>张量拼接</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token triple-quoted-string string">'''注意torch.cat和torch.stack的区别在于torch.cat沿着给定的维度拼接,而torch.stack会新增一维。例如当参数是3个10x5的张量,torch.cat的结果是30x5的张量,而torch.stack的结果是3x10x5的张量。'''</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>cat<span class="token punctuation">(</span>list_of_tensors<span class="token punctuation">,</span> dim<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">)</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>stack<span class="token punctuation">(</span>list_of_tensors<span class="token punctuation">,</span> dim<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p>张量扩展</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># Expand tensor of shape 64*512 to shape 64*512*7*7.</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>rand<span class="token punctuation">(</span><span class="token number">64</span><span class="token punctuation">,</span><span class="token number">512</span><span class="token punctuation">)</span>torch<span class="token punctuation">.</span>reshape<span class="token punctuation">(</span>tensor<span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">64</span><span class="token punctuation">,</span> <span class="token number">512</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>expand<span class="token punctuation">(</span><span class="token number">64</span><span class="token punctuation">,</span> <span class="token number">512</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre></li></ul><h2 id="张量计算"><a href="#张量计算" class="headerlink" title="张量计算"></a>张量计算</h2><ul><li><p>单元素张量数值提取</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">value <span class="token operator">=</span> torch<span class="token punctuation">.</span>rand<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span>item<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li><li><p>得到非零元素</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">torch<span class="token punctuation">.</span>nonzero<span class="token punctuation">(</span>tensor<span class="token punctuation">)</span> <span class="token comment"># index of non-zero elements</span>torch<span class="token punctuation">.</span>nonzero<span class="token punctuation">(</span>tensor<span class="token operator">==</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token comment"># index of zero elements</span>torch<span class="token punctuation">.</span>nonzero<span class="token punctuation">(</span>tensor<span class="token punctuation">)</span><span class="token punctuation">.</span>size<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token comment"># number of non-zero elements</span>torch<span class="token punctuation">.</span>nonzero<span class="token punctuation">(</span>tensor <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">.</span>size<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token comment"># number of zero elements</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre></li><li><p>将整数标签转为one-hot编码</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># pytorch的标记默认从0开始</span>tensor <span class="token operator">=</span> torch<span class="token punctuation">.</span>tensor<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span>N <span class="token operator">=</span> tensor<span class="token punctuation">.</span>size<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>num_classes <span class="token operator">=</span> <span class="token number">4</span>one_hot <span class="token operator">=</span> torch<span class="token punctuation">.</span>zeros<span class="token punctuation">(</span>N<span class="token punctuation">,</span> num_classes<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token builtin">long</span><span class="token punctuation">(</span><span class="token punctuation">)</span>one_hot<span class="token punctuation">.</span>scatter_<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">,</span> index<span class="token operator">=</span>torch<span class="token punctuation">.</span>unsqueeze<span class="token punctuation">(</span>tensor<span class="token punctuation">,</span> dim<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span> src<span class="token operator">=</span>torch<span class="token punctuation">.</span>ones<span class="token punctuation">(</span>N<span class="token punctuation">,</span> num_classes<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token builtin">long</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p>判断两个张量相等</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">torch<span class="token punctuation">.</span>allclose<span class="token punctuation">(</span>tensor1<span class="token punctuation">,</span> tensor2<span class="token punctuation">)</span> <span class="token comment"># float tensor</span>torch<span class="token punctuation">.</span>equal<span class="token punctuation">(</span>tensor1<span class="token punctuation">,</span> tensor2<span class="token punctuation">)</span> <span class="token comment"># int tensor</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></li><li><p>矩阵乘法</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># Matrix multiplcation: (m*n) * (n*p) * -> (m*p).</span>result <span class="token operator">=</span> torch<span class="token punctuation">.</span>mm<span class="token punctuation">(</span>tensor1<span class="token punctuation">,</span> tensor2<span class="token punctuation">)</span><span class="token comment"># Batch matrix multiplication: (b*m*n) * (b*n*p) -> (b*m*p)</span>result <span class="token operator">=</span> torch<span class="token punctuation">.</span>bmm<span class="token punctuation">(</span>tensor1<span class="token punctuation">,</span> tensor2<span class="token punctuation">)</span><span class="token comment"># Element-wise multiplication.</span>result <span class="token operator">=</span> tensor1 <span class="token operator">*</span> tensor2<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p>计算两组数据之间的两两欧式距离</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">dist <span class="token operator">=</span> torch<span class="token punctuation">.</span>sqrt<span class="token punctuation">(</span>torch<span class="token punctuation">.</span><span class="token builtin">sum</span><span class="token punctuation">(</span><span class="token punctuation">(</span>X1<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">,</span><span class="token boolean">None</span><span class="token punctuation">,</span><span class="token punctuation">:</span><span class="token punctuation">]</span> <span class="token operator">-</span> X2<span class="token punctuation">)</span> <span class="token operator">**</span> <span class="token number">2</span><span class="token punctuation">,</span> dim<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></li></ul><h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h1><ol><li><a href="https://zhuanlan.zhihu.com/p/104019160">[深度学习框架]PyTorch常用代码段</a></li></ol>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Pytorch </tag>
</tags>
</entry>
<entry>
<title>Beamer-使用指南</title>
<link href="2021-09-06/beamer-shi-yong-zhi-nan/"/>
<url>2021-09-06/beamer-shi-yong-zhi-nan/</url>
<content type="html"><![CDATA[<h1 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h1><h2 id="Beamer-框架代码"><a href="#Beamer-框架代码" class="headerlink" title="Beamer 框架代码"></a>Beamer 框架代码</h2><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\documentclass</span><span class="token punctuation">{</span><span class="token keyword">beamer</span><span class="token punctuation">}</span><span class="token comment">%Information to be included in the title page:</span><span class="token function selector">\title</span><span class="token punctuation">{</span>Sample title<span class="token punctuation">}</span><span class="token function selector">\author</span><span class="token punctuation">{</span>Anonymous<span class="token punctuation">}</span><span class="token function selector">\institute</span><span class="token punctuation">{</span>Overleaf<span class="token punctuation">}</span><span class="token function selector">\date</span><span class="token punctuation">{</span>2021<span class="token punctuation">}</span><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">document</span><span class="token punctuation">}</span><span class="token function selector">\frame</span><span class="token punctuation">{</span><span class="token function selector">\titlepage</span><span class="token punctuation">}</span><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token function selector">\frametitle</span><span class="token punctuation">{</span><span class="token headline class-name">Sample frame title</span><span class="token punctuation">}</span>This is some text in the first frame. This is some text in the first frame. This is some text in the first frame.<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">document</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="主要特性"><a href="#主要特性" class="headerlink" title="主要特性"></a>主要特性</h2><h3 id="Frame"><a href="#Frame" class="headerlink" title="Frame"></a>Frame</h3><ul><li><code>frame</code> 构成文件的最基本单元,对应一页或者多页 pdf 文件。</li></ul><h3 id="标题页"><a href="#标题页" class="headerlink" title="标题页"></a>标题页</h3><p>标题页由<code>\frame{\titlepage}</code>生成,完整内容包含:</p><ul><li><code>title</code> 命令:<code>\title[缩略大标题]{大标题}</code></li><li><code>author</code> 命令:<code>\author[缩略作者名]{作者名}</code></li><li><code>institute</code> 命令:<code>\institute[缩略机构名]{机构名}</code></li><li><code>date</code> 命令:<code>\date[缩略日期]{日期}</code></li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\title</span><span class="token punctuation">[</span>About Beamer<span class="token punctuation">]</span> <span class="token comment">%optional</span><span class="token punctuation">{</span>About the Beamer class in presentation making<span class="token punctuation">}</span><span class="token function selector">\subtitle</span><span class="token punctuation">{</span>A short story<span class="token punctuation">}</span><span class="token function selector">\author</span><span class="token punctuation">[</span>Arthur, Doe<span class="token punctuation">]</span> <span class="token comment">% (optional, for multiple authors)</span><span class="token punctuation">{</span>A.~B.~Arthur<span class="token function selector">\inst</span><span class="token punctuation">{</span>1<span class="token punctuation">}</span> <span class="token function selector">\and</span> J.~Doe<span class="token function selector">\inst</span><span class="token punctuation">{</span>2<span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token function selector">\institute</span><span class="token punctuation">[</span>VFU<span class="token punctuation">]</span> <span class="token comment">% (optional)</span><span class="token punctuation">{</span> <span class="token function selector">\inst</span><span class="token punctuation">{</span>1<span class="token punctuation">}</span><span class="token comment">%</span> Faculty of Physics<span class="token function selector">\\</span> Very Famous University <span class="token function selector">\and</span> <span class="token function selector">\inst</span><span class="token punctuation">{</span>2<span class="token punctuation">}</span><span class="token comment">%</span> Faculty of Chemistry<span class="token function selector">\\</span> Very Famous University<span class="token punctuation">}</span><span class="token function selector">\date</span><span class="token punctuation">[</span>VLC 2021<span class="token punctuation">]</span> <span class="token comment">% (optional)</span><span class="token punctuation">{</span>Very Large Conference, April 2021<span class="token punctuation">}</span><span class="token function selector">\logo</span><span class="token punctuation">{</span><span class="token function selector">\includegraphics</span><span class="token punctuation">[</span>height=1cm<span class="token punctuation">]</span><span class="token punctuation">{</span>overleaf-logo<span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="目录页"><a href="#目录页" class="headerlink" title="目录页"></a>目录页</h3><ul><li>显示所有目录</li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token function selector">\frametitle</span><span class="token punctuation">{</span><span class="token headline class-name">Table of Contents</span><span class="token punctuation">}</span><span class="token function selector">\tableofcontents</span><span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><ul><li>分章节显示所有目录/子目录内容</li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\AtBeginSection</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">{</span> <span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span> <span class="token function selector">\frametitle</span><span class="token punctuation">{</span><span class="token headline class-name">Table of Contents</span><span class="token punctuation">}</span> <span class="token function selector">\tableofcontents</span><span class="token punctuation">[</span>currentsection<span class="token punctuation">]</span> <span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token function selector">\AtBeginSubsection</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">{</span> <span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span> <span class="token function selector">\frametitle</span><span class="token punctuation">{</span><span class="token headline class-name">Table of Contents</span><span class="token punctuation">}</span> <span class="token function selector">\tableofcontents</span><span class="token punctuation">[</span>currentsection<span class="token punctuation">]</span> <span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="内容的跨页显示(页码不改变)"><a href="#内容的跨页显示(页码不改变)" class="headerlink" title="内容的跨页显示(页码不改变)"></a>内容的跨页显示(页码不改变)</h3><ul><li>使用<code><1-></code>标记<ul><li><code><></code>代表进行跨页显示</li><li><code>数字</code>代表在之后的第几页显示</li><li><code>-</code>代表自之后的第几页开始显示</li></ul></li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token function selector">\frametitle</span><span class="token punctuation">{</span><span class="token headline class-name">Sample frame title</span><span class="token punctuation">}</span>This is a text in second frame.For the sake of showing an example.<span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">itemize</span><span class="token punctuation">}</span> <span class="token function selector">\item</span><1-> Text visible on slide 1 <span class="token function selector">\item</span><2-> Text visible on slide 2 <span class="token function selector">\item</span><3> Text visible on slide 3 <span class="token function selector">\item</span><4-> Text visible on slide 4<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">itemize</span><span class="token punctuation">}</span><span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li>使用 <code>\pause</code> 命令</li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span> In this slide <span class="token function selector">\pause</span> the text will be partially visible <span class="token function selector">\pause</span> And finally everything will be there<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="内容强调"><a href="#内容强调" class="headerlink" title="内容强调"></a>内容强调</h3><ul><li><code>alert</code> 命令:标红字体</li><li><code>block</code> 环境:蓝色图框</li><li><code>alertblock</code> 环境:红色图框</li><li><code>examples</code> 环境:绿色图框</li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token function selector">\frametitle</span><span class="token punctuation">{</span><span class="token headline class-name">Sample frame title</span><span class="token punctuation">}</span>In this slide, some important text will be<span class="token function selector">\alert</span><span class="token punctuation">{</span>highlighted<span class="token punctuation">}</span> because it's important.Please, don't abuse it.<span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">block</span><span class="token punctuation">}</span><span class="token punctuation">{</span>Remark<span class="token punctuation">}</span>Sample text<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">block</span><span class="token punctuation">}</span><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">alertblock</span><span class="token punctuation">}</span><span class="token punctuation">{</span>Important theorem<span class="token punctuation">}</span>Sample text in red box<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">alertblock</span><span class="token punctuation">}</span><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">examples</span><span class="token punctuation">}</span>Sample text in green box. The title of the block is ``Examples".<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">examples</span><span class="token punctuation">}</span><span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="主题风格"><a href="#主题风格" class="headerlink" title="主题风格"></a>主题风格</h3><ul><li>主题:<code>\usetheme{Madrid}</code></li><li>颜色主题:<code>\usecolortheme{beaver}</code>(须放在主题命令之后)</li><li>字体<ul><li>字体大小规定在<code>\documentclass[17pt]{beamer}</code>中</li><li>字体主题:<code>\usefonttheme{structuresmallcapsserif}</code></li></ul></li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\documentclass</span><span class="token punctuation">[</span>17pt<span class="token punctuation">]</span><span class="token punctuation">{</span><span class="token keyword">beamer</span><span class="token punctuation">}</span><span class="token function selector">\usepackage</span><span class="token punctuation">{</span><span class="token keyword">tikz</span><span class="token punctuation">}</span><span class="token function selector">\usetheme</span><span class="token punctuation">{</span>Madrid<span class="token punctuation">}</span><span class="token function selector">\usecolortheme</span><span class="token punctuation">{</span>beaver<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><h3 id="多栏"><a href="#多栏" class="headerlink" title="多栏"></a>多栏</h3><ul><li>columns 环境</li><li>column 命令标识宽度</li></ul><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span class="token function selector">\frametitle</span><span class="token punctuation">{</span><span class="token headline class-name">Two-column slide</span><span class="token punctuation">}</span><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">columns</span><span class="token punctuation">}</span><span class="token function selector">\column</span><span class="token punctuation">{</span>0.5<span class="token function selector">\textwidth</span><span class="token punctuation">}</span>This is a text in first column.<span class="token equation string">$$E=mc^2$$</span><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">itemize</span><span class="token punctuation">}</span><span class="token function selector">\item</span> First item<span class="token function selector">\item</span> Second item<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">itemize</span><span class="token punctuation">}</span><span class="token function selector">\column</span><span class="token punctuation">{</span>0.5<span class="token function selector">\textwidth</span><span class="token punctuation">}</span>This text will be in the second columnand on a second thoughts, this is a nice lookinglayout in some cases.<span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">columns</span><span class="token punctuation">}</span><span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">frame</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h1><ol><li><a href="https://www.overleaf.com/learn/latex/Beamer">https://www.overleaf.com/learn/latex/Beamer</a></li></ol>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Beamer </tag>
</tags>
</entry>
<entry>
<title>Pandas 读取 Excel 文件</title>
<link href="2021-09-02/pandas-du-qu-excel-wen-jian/"/>
<url>2021-09-02/pandas-du-qu-excel-wen-jian/</url>
<content type="html"><![CDATA[<ol><li>使用接口 <a href="https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html">https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html</a></li></ol><pre class="line-numbers language-python" data-language="python"><code class="language-python">pandas<span class="token punctuation">.</span>read_excel<span class="token punctuation">(</span>io<span class="token punctuation">,</span> sheet_name<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> header<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> names<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> index_col<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> usecols<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> squeeze<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span> dtype<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> engine<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> converters<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> true_values<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> false_values<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> skiprows<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> nrows<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> na_values<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> keep_default_na<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">,</span> na_filter<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">,</span> verbose<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span> parse_dates<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span> date_parser<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> thousands<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> comment<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> skipfooter<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> convert_float<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">,</span> mangle_dupe_cols<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">,</span> storage_options<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>重要参数</li></ul><ol start="2"><li>遇到的问题</li></ol><ul><li><p>ImportError: Install xlrd >= 0.9.0 for Excel support</p><ul><li>解决方案:安装 <code>xlrd</code> 1.2.0 版本,过高的版本无法打开文件</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pip uninstall xlrdpip <span class="token function">install</span> <span class="token assign-left variable">xlrd</span><span class="token operator">==</span><span class="token number">1.2</span>.0<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></li></ul>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Pandas </tag>
</tags>
</entry>
<entry>
<title>Linux 命令 nohup</title>
<link href="2021-08-07/linux-ming-ling-nohup/"/>
<url>2021-08-07/linux-ming-ling-nohup/</url>
<content type="html"><![CDATA[<h1 id="什么是-nohup-命令"><a href="#什么是-nohup-命令" class="headerlink" title="什么是 nohup 命令"></a>什么是 <code>nohup</code> 命令</h1><p><code>nohup</code> (no hang up) 命令,用来标识其后的指令在运行过程中不受任何挂断指令的影响。在用户账户退出后,<code>nohup</code>标识的命令将继续运行。</p><h1 id="命令语法"><a href="#命令语法" class="headerlink" title="命令语法"></a>命令语法</h1><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">nohup</span> <span class="token builtin class-name">command</span> <span class="token operator">></span> file_name <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&1</span> <span class="token punctuation">[</span><span class="token operator">&</span><span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>\> file_name</code> 表示运行日志写入的文件名,默认名为 <code>nohup.out</code>。</li><li><code>2>&1</code> 是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到日志文件。</li><li><code>[&]</code> 标志是否后台运行。</li></ul><h1 id="nohup-与-amp-联系与区别"><a href="#nohup-与-amp-联系与区别" class="headerlink" title="nohup 与 & 联系与区别"></a><code>nohup</code> 与 <code>&</code> 联系与区别</h1><ul><li><code>nohup</code> 指运行不挂断,用户退出会话后程序继续运行,用户使用 <code>Ctrl+c</code> 中断命令可以结束程序。</li><li><code>&</code> 指后台运行,用户退出会话后程序被中止,可以使用 <code>kill</code> 命令中断程序。</li><li><code>nohup</code> + <code>&</code> 后台永久运行,只能被<code>kill</code> 命令中断。</li></ul><h1 id="中断-nohup-任务"><a href="#中断-nohup-任务" class="headerlink" title="中断 nohup 任务"></a>中断 <code>nohup</code> 任务</h1><ul><li>使用 <code>nohup</code> 命令执行时控制台上显示的进程号 + <code>kill</code> 命令。</li><li>查看后台进程,检索进程号 + <code>kill</code> 命令:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">ps</span> -aux <span class="token operator">|</span> <span class="token function">grep</span> <span class="token builtin class-name">command</span> <span class="token operator">|</span> <span class="token function">grep</span> -v <span class="token function">grep</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>]]></content>
<categories>
<category> Engineering </category>
</categories>
<tags>
<tag> Linux Command </tag>
</tags>
</entry>
<entry>
<title>VScode 使用技巧</title>
<link href="2021-06-05/vscode-shi-yong-ji-qiao/"/>
<url>2021-06-05/vscode-shi-yong-ji-qiao/</url>
<content type="html"><![CDATA[<h1 id="遇到的问题"><a href="#遇到的问题" class="headerlink" title="遇到的问题"></a>遇到的问题</h1><ol><li>VSCode 连接远程服务器失败</li></ol><ul><li>故障日志</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">Resolver error: Error: Running the contributed command: <span class="token string">'_workbench.downloadResource'</span> failed.<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><p>可能原因</p><ul><li>远程服务器网络条件差。</li></ul></li><li><p>解决方案:手动安装服务器端软件</p><ul><li>删除远程服务器原文件夹。</li></ul></li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rm</span> -rf ~/.vscode-server<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>本地再次尝试连接,在远程服务器生成对应文件夹。</li><li>进入远程服务器软件端。</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token builtin class-name">cd</span> ~/.vscode-server/bin/<span class="token punctuation">[</span>commit_id<span class="token punctuation">]</span>/<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>删除该文件夹下所有的内容。</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rm</span> -rf *<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>使用<code>wget</code>从官网下载最新的代码压缩文件。</li></ul><p><img src="/2021-06-05/vscode-shi-yong-ji-qiao/1.png" alt="查看commit_id"></p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">wget</span> https://update.code.visualstudio.com/commit:<span class="token punctuation">[</span><span class="token variable">$COMMIT_ID</span><span class="token punctuation">]</span>/server-linux-x64/stable --no-check-certificate<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>解压缩文件。</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">tar</span> -xvf stable --strip-components <span class="token number">1</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>尝试本地重新连接。</li></ul><p><strong>可能遇到的问题</strong></p><ul><li>如果服务器下载网络存在问题,本地上传遇到 <code>版本不一致</code> ,需要检查服务器端 <code>commit_id</code> 文件夹名和自己下载的版本是否一致。</li></ul>]]></content>
<categories>
<category> Engineering </category>
</categories>
<tags>
<tag> VScode </tag>
</tags>
</entry>
<entry>
<title>包工具命令</title>
<link href="2021-06-05/bao-guan-li-gong-ju-ming-ling/"/>
<url>2021-06-05/bao-guan-li-gong-ju-ming-ling/</url>
<content type="html"><![CDATA[<h2 id="npm"><a href="#npm" class="headerlink" title="npm"></a>npm</h2><ol><li><p>简介</p></li><li><p>安装 <code>cnpm</code> 进行包安装</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> -g cnpm --registry<span class="token operator">=</span>https://registry.npm.taobao.orgcnpm <span class="token function">install</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></li><li><p><code>npm</code> 换源</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">npm</span> config <span class="token builtin class-name">set</span> registry https://registry.npm.taobao.org<span class="token function">npm</span> get registry<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></li></ol><h2 id="pip"><a href="#pip" class="headerlink" title="pip"></a>pip</h2><ol><li><p>简介</p></li><li><p><code>pip</code> 换源</p></li></ol><ul><li>国内可供选择源地址</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/豆瓣<span class="token punctuation">(</span>douban<span class="token punctuation">)</span> http://pypi.douban.com/simple/清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li><code>pip</code> 永久换源</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pip config <span class="token builtin class-name">set</span> global.index-url https://mirrors.aliyun.com/pypi/simple/<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>pip</code> 临时换源</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pip <span class="token function">install</span> matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>]]></content>
<categories>
<category> Engineering </category>
</categories>
<tags>
<tag> npm </tag>
<tag> pip </tag>
</tags>
</entry>
<entry>
<title>Latex 常用输入片段</title>
<link href="2021-05-24/markdownlatex-chang-yong-shu-ru-pian-duan/"/>
<url>2021-05-24/markdownlatex-chang-yong-shu-ru-pian-duan/</url>
<content type="html"><</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h1 id="符号"><a href="#符号" class="headerlink" title="符号"></a>符号</h1><h2 id="重音符"><a href="#重音符" class="headerlink" title="重音符"></a>重音符</h2><table><thead><tr><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th></tr></thead><tbody><tr><td>\bar{a}</td><td>$\bar{a}$</td><td>\acute{a}</td><td>$\acute{a}$</td><td>\check{a}</td><td>$\check{a}$</td><td>\grave{a}</td><td>$\grave{a}$</td></tr><tr><td>\hat{a}</td><td>$\hat{a}$</td><td>\tilde{a}</td><td>$\tilde{a}$</td><td>\widehat{A}</td><td>$\widehat{A}$</td><td>\widetilde{A}</td><td>$\widetilde{A}$</td></tr><tr><td>\breve{a}</td><td>$\breve{a}$</td><td>\vec{a}</td><td>$\vec{a}$</td><td>\dot{a}</td><td>$\dot{a}$</td><td>\ddot{a}</td><td>$\ddot{a}$</td></tr></tbody></table><h2 id="小写希腊字母"><a href="#小写希腊字母" class="headerlink" title="小写希腊字母"></a>小写希腊字母</h2><table><thead><tr><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th></tr></thead><tbody><tr><td>\alpha</td><td>$\alpha$</td><td>\beta</td><td>$\beta$</td><td>\gamma</td><td>$\gamma$</td><td>\delta</td><td>$\delta$</td></tr><tr><td>\epsilon</td><td>$\epsilon$</td><td>\varepsilon</td><td>$\varepsilon$</td><td>\zeta</td><td>$\zeta$</td><td>\xi</td><td>$\xi$</td></tr><tr><td>\theta</td><td>$\theta$</td><td>\vartheta</td><td>$\vartheta$</td><td>\iota</td><td>$\iota$</td><td>\kappa</td><td>$\kappa$</td></tr><tr><td>\lambda</td><td>$\lambda$</td><td>\mu</td><td>$\mu$</td><td>\nu</td><td>$\nu$</td><td>\tau</td><td>$\tau$</td></tr><tr><td>o</td><td>$o$</td><td>\pi</td><td>$\pi$</td><td>\varpi</td><td>$\varpi$</td><td>\rho</td><td>$\rho$</td></tr><tr><td>\varrho</td><td>$\varrho$</td><td>\sigma</td><td>$\sigma$</td><td>\varsigma</td><td>$\varsigma$</td><td>\upsilon</td><td>$\upsilon$</td></tr><tr><td>\phi</td><td>$\phi$</td><td>\varphi</td><td>$\varphi$</td><td>\chi</td><td>$\chi$</td><td>\psi</td><td>$\psi$</td></tr><tr><td>\omega</td><td>$\omega$</td><td>\eta</td><td>$\eta$</td><td></td><td></td><td></td><td></td></tr></tbody></table><h2 id="大写希腊字母"><a href="#大写希腊字母" class="headerlink" title="大写希腊字母"></a>大写希腊字母</h2><table><thead><tr><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th></tr></thead><tbody><tr><td>\Gamma</td><td>$\Gamma$</td><td>\Delta</td><td>$\Delta$</td><td>\Theta</td><td>$\Theta$</td><td>\Lambda</td><td>$\Lambda$</td></tr><tr><td>\Xi</td><td>$\Xi$</td><td>\Pi</td><td>$\Pi$</td><td>\Sigma</td><td>$\Sigma$</td><td>\Upsilon</td><td>$\Upsilon$</td></tr><tr><td>\Phi</td><td>$\Phi$</td><td>\Psi</td><td>$\Psi$</td><td>\Omega</td><td>$\Omega$</td><td></td><td></td></tr></tbody></table><h2 id="二元关系符"><a href="#二元关系符" class="headerlink" title="二元关系符"></a>二元关系符</h2><table><thead><tr><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th></tr></thead><tbody><tr><td><</td><td>$<$</td><td>></td><td>$>$</td><td>=</td><td>$=$</td><td>\neq,\ne</td><td>$\neq, \ne$</td></tr><tr><td>\leq, \le</td><td>$\leq, \le$</td><td>\geq, \ge</td><td>$\geq, \ge$</td><td>\nleq</td><td>$\nleq$</td><td>\ngeq</td><td>$\ngeq$</td></tr><tr><td>\equiv</td><td>$\equiv$</td><td>\ll</td><td>$\ll$</td><td>\gg</td><td>$\gg$</td><td></td><td></td></tr><tr><td>\sim</td><td>$\sim$</td><td>\simeq</td><td>$\simeq$</td><td>\approx</td><td>$\approx$</td><td>\cong</td><td>$\cong$</td></tr><tr><td>\subset</td><td>$\subset$</td><td>\supset</td><td>$\supset$</td><td>\subseteq</td><td>$\subseteq$</td><td>\supseteq</td><td>$\supseteq$</td></tr><tr><td>\in</td><td>$\in$</td><td>\ni,\owns</td><td>$\ni, \owns$</td><td>\propto</td><td>$\propto$</td><td>\mid</td><td>$\mid$</td></tr><tr><td>\parallel</td><td>$\parallel$</td><td>:</td><td>$:$</td><td>\notin</td><td>$\notin$</td><td></td><td></td></tr></tbody></table><h2 id="二元运算符"><a href="#二元运算符" class="headerlink" title="二元运算符"></a>二元运算符</h2><h2 id="大运算符"><a href="#大运算符" class="headerlink" title="大运算符"></a>大运算符</h2><table><thead><tr><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th></tr></thead><tbody><tr><td>\sum</td><td>$\sum$</td><td>\prod</td><td>$\prod$</td><td>\coprod</td><td>$\coprod$</td><td></td><td></td></tr><tr><td>\bigcup</td><td>$\bigcup$</td><td>\bigcap</td><td>$\bigcap$</td><td>\int</td><td>$\int$</td><td>\oint</td><td>$\oint$</td></tr><tr><td>\bigvee</td><td>$\bigvee$</td><td>\bigwedge</td><td>$\bigwedge$</td><td></td><td></td><td></td><td></td></tr><tr><td>\bigoplus</td><td>$\bigoplus$</td><td>\bigotimes</td><td>$\bigotimes$</td><td>\bigodot</td><td>$\bigodot$</td><td></td><td></td></tr></tbody></table><h2 id="括号"><a href="#括号" class="headerlink" title="括号"></a>括号</h2><table><thead><tr><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th><th>语法</th><th>效果</th></tr></thead><tbody><tr><td>\vert</td><td>$\vert$</td><td>\Vert</td><td>$\Vert$</td><td>符号直接表示</td><td>$()$</td><td>符号直接表示</td><td>$[]$</td></tr><tr><td>\lbrace, \rbrace</td><td>$\lbrace, \rbrace$</td><td>\langle, \rangle</td><td>$\langle, \rangle$</td><td>\lceil, \rceil</td><td>$\lceil, \rceil$</td><td>\lfloor, \rfloor</td><td>$\lfloor, \rfloor$</td></tr></tbody></table><h1 id="公式"><a href="#公式" class="headerlink" title="公式"></a>公式</h1><h2 id="大型公式输入"><a href="#大型公式输入" class="headerlink" title="大型公式输入"></a>大型公式输入</h2><h2 id="公式输入技巧"><a href="#公式输入技巧" class="headerlink" title="公式输入技巧"></a>公式输入技巧</h2><ol><li>长公式折行,使用$\right. \\ \left.$进行折行。</li></ol><pre class="line-numbers language-latex" data-language="latex"><code class="language-latex"><span class="token function selector">\begin</span><span class="token punctuation">{</span><span class="token keyword">equation</span><span class="token punctuation">}</span><span class="token equation string"> <span class="token equation-command regex">\begin</span>{aligned} h_{i}^{l+1}=<span class="token equation-command regex">\sigma</span><span class="token equation-command regex">\left</span>(<span class="token equation-command regex">\sum</span>_{j <span class="token equation-command regex">\in</span> N_{i}^{r 1}} <span class="token equation-command regex">\frac</span>{1}{c_{i, r 1}} W_{r 1}^{(l)} h_{j}^{(l)}+<span class="token equation-command regex">\sum</span>_{j <span class="token equation-command regex">\in</span> N_{i}^{r 2}} <span class="token equation-command regex">\frac</span>{1}{c_{i, r 2}} W_{r 2}^{(l)} h_{j}^{(l)}+ <span class="token equation-command regex">\right</span>. <span class="token equation-command regex">\\</span> <span class="token equation-command regex">\left</span>. <span class="token equation-command regex">\sum</span>_{j <span class="token equation-command regex">\in</span> N_{i}^{r_{j}}} <span class="token equation-command regex">\frac</span>{1}{c_{i, r 3}} W_{r 3}^{(l)} h_{j}^{(l)}+W_{0}^{(l)} h_{i}^{(l)}<span class="token equation-command regex">\right</span>) <span class="token equation-command regex">\end</span>{aligned}</span><span class="token function selector">\end</span><span class="token punctuation">{</span><span class="token keyword">equation</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Latex </tag>
</tags>
</entry>
<entry>
<title>核方法</title>
<link href="2021-05-23/he-fang-fa/"/>
<url>2021-05-23/he-fang-fa/</url>
<content type="html"><![CDATA[<h1 id="一些空间的定义"><a href="#一些空间的定义" class="headerlink" title="一些空间的定义"></a>一些空间的定义</h1><h2 id="泛函分析"><a href="#泛函分析" class="headerlink" title="泛函分析"></a>泛函分析</h2><ul><li>以下内容属于“泛函分析(functional analysis)”范畴,泛函分析研究的是函数空间(function space)的性质。</li><li>函数空间是指空间里面的点(元素)都是函数的空间。</li></ul><h2 id="线性空间"><a href="#线性空间" class="headerlink" title="线性空间"></a>线性空间</h2><ul><li>线性空间(linear space):定义了数乘和加法的空间。可以通过确定一组基底(basis),通过线性组合得到空间中的所有点。</li><li>举例:<ul><li>二次函数空间,基底为 $\lbrace 1,x,x^2\rbrace$,任意函数 $f(x)=\alpha_1·1+\alpha_2·x+\alpha_3·x^2$,坐标为$(\alpha_1,\alpha_2,\alpha_3)$。</li></ul></li><li>一般选择正交的函数作为函数空间的基底,正交基(orthogonal basis),函数正交定义:<br>$$<br>\int f(x)g(x) {\rm d}x = 0<br>$$</li></ul><h2 id="线性度量空间"><a href="#线性度量空间" class="headerlink" title="线性度量空间"></a>线性度量空间</h2><ul><li>线性度量空间(metric linear space):定义了距离(metric)的线性空间。</li><li>距离的性质:<ul><li>非负性:$d(x,y) \geq 0; d(x,y) = 0; \Leftrightarrow x = y$;</li><li>对称性:$d(x,y) = d(y,x)$;</li><li>三角不等式:$d(x,y) + d(y,z) \geq d(x,z)$。</li></ul></li></ul><h2 id="线性赋范空间"><a href="#线性赋范空间" class="headerlink" title="线性赋范空间"></a>线性赋范空间</h2><ul><li>线性赋范空间(normed linear space):定义了范数(norm)的线性度量空间。</li><li>范数的性质:<ul><li>非负性:$||x|| \geq 0$;</li><li>齐次性:$||\alpha x||=|\alpha|||x||$;</li><li>三角不等式:$||x||+||y||\geq||x+y||$。</li></ul></li><li>范数和距离的区别:<ul><li>范数可以导出距离,范数符合距离所有性质;</li><li>距离导不出范数,距离不一定范数齐次性。<ul><li>$d(x,y)=||x-y||$</li></ul></li></ul></li></ul><h2 id="巴纳赫空间"><a href="#巴纳赫空间" class="headerlink" title="巴纳赫空间"></a>巴纳赫空间</h2><ul><li>巴纳赫空间(Banach space):完备的线性赋范空间。</li><li>完备性(completeness):任一柯西序列都收敛。</li><li>柯西序列(Cauchy sequence):</li></ul><h2 id="内积线性空间"><a href="#内积线性空间" class="headerlink" title="内积线性空间"></a>内积线性空间</h2><ul><li>内积线性空间(inner product linear space):定义了内积(inner product)的线性赋范空间。</li><li>内积:标量积(scalar product)或点积(dot product)。</li><li>内积的性质:<ul><li>对称性:$\langle x,y\rangle =\langle y,x\rangle $;</li><li>线性性:<ul><li>$\langle x,y\rangle +\langle x,z\rangle =\langle x,y+z\rangle $;</li><li>$\langle \alpha x,y\rangle =\alpha\langle x,y\rangle $(数乘只对第一变元有效);</li></ul></li><li>正定性:$\langle x,x\rangle \geq 0$。</li></ul></li><li>内积和范数的区别:<ul><li>内积可以导出范数,$||x||^2 = \langle x,x \rangle$;</li><li>范数导不出内积。</li></ul></li></ul><h2 id="欧几里得空间"><a href="#欧几里得空间" class="headerlink" title="欧几里得空间"></a>欧几里得空间</h2><ul><li>欧几里得空间(Euclidean space):有限维的实内积线性空间。</li></ul><h2 id="希尔伯特空间"><a href="#希尔伯特空间" class="headerlink" title="希尔伯特空间"></a>希尔伯特空间</h2><ul><li>希尔伯特空间(Hilbert space):完备的内积线性空间。</li></ul><h2 id="举例"><a href="#举例" class="headerlink" title="举例"></a>举例</h2><ol><li><p>泰勒级数(Taylor series)展开,基底为:$\lbrace x^i \rbrace,i=0,1,2,\cdots$;</p></li><li><p>傅里叶级数(Fourier series)展开,基底为:$\lbrace 1,\cos x, \sin x, \cos 2x, \sin 2x, \cdots \rbrace$;</p></li></ol><h1 id="核函数"><a href="#核函数" class="headerlink" title="核函数"></a>核函数</h1><h2 id="特征值与特征向量"><a href="#特征值与特征向量" class="headerlink" title="特征值与特征向量"></a>特征值与特征向量</h2><ul><li>有限维的$n\times n$矩阵$A$,可以定义特征值$\lambda$和特征向量$x$为:<br>$$<br>Ax=\lambda x<br>$$</li><li>特征向量可以看成这个矩阵$n$维列空间的一组基底。</li></ul><h2 id="核函数-1"><a href="#核函数-1" class="headerlink" title="核函数"></a>核函数</h2><ul><li>我们把每个函数$f(x)$看作一个无穷维的向量,定义一个无穷维的矩阵$K(x,y)$,如果它满足:<ul><li>正定性:$\forall f \rightarrow \iint f(x)K(x,y)f(y){\rm d}x{\rm d}y \geq 0$;</li><li>对称性:$K(x,y)=K(y,x)$;</li></ul></li></ul><p>则称之为核函数(kernel function)。</p><ul><li>核函数究竟是什么?<ul><li>首先,他不是映射,而是一种在高维空间的内积计算方式;</li><li>其次,应用核函数的时候,我们是不用找具体的低维映射到高维的映射方式,只需要把高维空间的内积计算方式定义好,并将其表示为在低维空间中的坐标之间的计算;</li><li>最后,Mercer Theorem 保证了一个符合条件的核函数一定存在一个映射后的高维空间与之对应。</li></ul></li></ul><h2 id="核函数的特征值与特征函数"><a href="#核函数的特征值与特征函数" class="headerlink" title="核函数的特征值与特征函数"></a>核函数的特征值与特征函数</h2><ul><li><p>对于一个核函数$K(x,y)$,存在特征值$\lambda$和特征函数$\psi(x)$,满足:</p><p>$$<br>\int K(x,y)\psi(x){\rm d}x = \lambda\psi(y)<br>$$</p></li><li><p>对于不同的特征值$\lambda_1,\lambda_2$和他们对应的特征函数$\psi_1(x),\psi_2(x)$,满足:</p></li></ul><p>$$<br>\int \lambda_1\psi_1(x)\psi_2(x){\rm d}x = \iint K(y,x)\psi_1(y){\rm d}y\psi_2(x){\rm d}x \<br>=\iint K(y,x)\psi_2(x){\rm d}x\psi_1(y){\rm d}y \<br>$$</p><p>$$<br>=\int \lambda_2\psi_2(y)\psi_1(y){\rm d}y \<br>=\int \lambda_2\psi_2(x)\psi_1(x){\rm d}x \<br>$$</p><p>因此:</p><p>$$<br>\langle\psi_1,\psi_2\rangle=\int\psi_1(x)\psi_2(x){\rm d}x=0<br>$$</p><ul><li>此时我们找到了无穷多个特征值$\lbrace\lambda_i\rbrace_{i=1}^{\infty}$,一组无穷多个元素的正交基$\lbrace\psi_i\rbrace_{i=1}^{\infty}$。</li></ul><h2 id="再生核希尔伯特空间"><a href="#再生核希尔伯特空间" class="headerlink" title="再生核希尔伯特空间"></a>再生核希尔伯特空间</h2><ul><li><p>如果我们把$\lbrace\sqrt{\lambda_i}\psi_i\rbrace_{i=1}^{\infty}$当成一组正交基来生成一个希尔伯特空间$\mathcal{H}$,则这个空间中的所有函数都能表示为:</p><p>$$<br>f=\sum_{i=1}^{\infty}f_i\sqrt{\lambda_i}\psi_i<br>$$</p></li><li><p>函数坐标:$f=(f_1,f_2,\cdots)_{\mathcal{H}}^T$;</p></li><li><p>函数内积:</p><p>$$<br>\langle f,g \rangle_\mathcal{H} = \sum_{i=1}^\infty f_i g_i<br>$$</p></li><li><p>核函数看成一种内积形式:</p></li></ul><p>$$<br>K(x,·)=\sum_{i=1}^\infty\lambda_i\psi_i(x)\psi_i(·)<br>$$</p><ul><li><p>$K(x,·)$:$x$是一个输入的函数(核函数是函数的函数,输入变量是两个函数),$x$这个函数写成基和坐标的形式是:$\sum_{i=1}^\infty\sqrt{\lambda_i}\psi_i(x)$;</p></li><li><p>$K$的向量表示:$K(x,·)=(\sqrt{\lambda_1}\psi_1(x),\sqrt{\lambda_2}\psi_2(x),\cdots)_\mathcal{H}^\infty$;</p></li><li><p>$K$的内积表示:$\lbrace K(x,·),K(y,·)\rbrace_\mathcal{H} = \sum_{i=0}^\infty \lambda_i\phi_i(x)\phi_i(y) = K(x,y)$ —— 再生性 —— 再生核希尔伯特空间(reproducing kernel Hilbert space,RKHS)。</p></li></ul><h2 id="映射函数"><a href="#映射函数" class="headerlink" title="映射函数"></a>映射函数</h2><ul><li>定义一个映射$\phi:X\rightarrow\mathcal{H},\phi(x)=K(x,·)$,他把一个点$x$映射成了一个函数:</li></ul><p>$$<br>\phi(x)=K(x,·)=(\sqrt{\lambda_1}\psi_1(x),\sqrt{\lambda_2}\psi_2(x),\cdots)_\mathcal{H}^\infty<br>$$</p><ul><li>则:</li></ul><p>$$<br>\lbrace\phi(x),\phi(y)\rbrace_\mathcal(H)=\lbrace K(x,·),K(y,·)\rbrace_\mathcal(H)=K(x,y)<br>$$</p><ul><li>不用确定$K(x,·)$的具体形式,但是一定可以找到,具体可以看 Moore-Aronszajn 定理 —— 核方法。</li></ul><h1 id="SVM-中的应用"><a href="#SVM-中的应用" class="headerlink" title="SVM 中的应用"></a>SVM 中的应用</h1><ul><li>未完待续</li></ul><h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h1><ol><li><a href="https://sakigami-yang.me/2017/08/13/about-kernel-01/">说一说核方法</a></li></ol>]]></content>
<categories>
<category> Math </category>
</categories>
<tags>
<tag> Machine Learning </tag>
</tags>
</entry>
<entry>
<title>Nginx 服务器配置教程</title>
<link href="2021-05-17/nginx-fu-wu-qi-pei-zhi-jiao-cheng/"/>
<url>2021-05-17/nginx-fu-wu-qi-pei-zhi-jiao-cheng/</url>
<content type="html"><![CDATA[<h1 id="什么是-Nginx"><a href="#什么是-Nginx" class="headerlink" title="什么是 Nginx?"></a>什么是 Nginx?</h1><h1 id="Nginx-的安装"><a href="#Nginx-的安装" class="headerlink" title="Nginx 的安装"></a>Nginx 的安装</h1><ul><li>服务器环境:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">CentOS <span class="token number">7.0</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol><li>准备工作</li></ol><ul><li><code>SSL</code> 功能安装 <code>openssl</code> 库:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">yum <span class="token function">install</span> openssl<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>gzip</code> 模块需要 <code>zlib</code> 库:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">yum <span class="token function">install</span> zlib<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li><code>rewrite</code> 模块安装 <code>pcre</code> 库:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">yum <span class="token function">install</span> pcre<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol start="2"><li>安装 Nginx 依赖项和 Nginx</li></ol><ul><li>安装 Nginx 需要的库 [此处注意下载链接的有效性]</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">rpm</span> -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>安装 Nginx:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">yum <span class="token function">install</span> nginx<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ul><li>启动 Nginx:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">service</span> nginx start<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol start="3"><li>测试 Nginx 的有效性:浏览器访问本地/服务器端口,如下表示安装成功:</li></ol><ul><li>服务器端注意开放 80 端口。</li></ul><p><img src="/2021-05-17/nginx-fu-wu-qi-pei-zhi-jiao-cheng/success.png" alt="正确启动Nginx的界面"></p><ol start="4"><li>配置 Nginx 的文件位于:</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">/etc/nginx/<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h1 id="配置-Nginx"><a href="#配置-Nginx" class="headerlink" title="配置 Nginx"></a>配置 Nginx</h1><ol><li><p>缺省配置:<code>http -> server -> location</code>,内层块自动继承外层块的内容。</p></li><li><p><code>http</code> 层次:<code>/etc/nginx/nginx.conf</code></p></li></ol><ul><li><code>include</code> 语句指明了下级配置文件的路径:当需要处理的 <code>server</code> 超过 2 个时,建议将不同虚拟机的配置放在不同文件中,通过在主配置文件的 <code>include</code> 指令进行选择。</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">http <span class="token punctuation">{</span> <span class="token punctuation">..</span>. <span class="token punctuation">..</span>. include /etc/nginx/conf.d/*.conf<span class="token punctuation">;</span> <span class="token comment"># include /etc/nginx/[name]/*.conf</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="3"><li><code>server</code> 层次:<code>/etc/nginx/conf.d/default.conf</code></li></ol><ul><li>在 <code>url/ip</code> 层次对发送的请求进行后端服务器的转发;</li><li>通过构建虚拟主机(server)的概念,用 <code>server_name</code> 对服务进行配置隔离;</li><li><code>listen</code> 用于确定监听的端口;</li><li>对应于同一规则的多个域名可以使用空格进行分离。</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">server <span class="token punctuation">{</span> listen <span class="token number">80</span><span class="token punctuation">;</span> server_name demo.tdingquan.top<span class="token punctuation">;</span> access_log /var/log/nginx/host.access.log main<span class="token punctuation">;</span> <span class="token punctuation">..</span>. <span class="token punctuation">..</span>.<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="4"><li><code>location</code> 层次:<code>/etc/nginx/conf.d/default.conf</code>,包含在 <code>server</code> 内</li></ol><ul><li>每个 <code>url/ip</code> 对应于一个服务,Nginx 对服务进行处理转发,转发路径通过 <code>location</code> 指定;</li><li><code>server</code> 是对域名的指定,<code>location</code> 是对访问内容的指定;</li><li><code>index</code> 用于设定访问的默认首页地址;</li><li><code>root</code> 用于指定访问的根目录。</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">server <span class="token punctuation">{</span> <span class="token punctuation">..</span>. <span class="token punctuation">..</span>. location / <span class="token punctuation">{</span> root /root/BoxEViz<span class="token punctuation">;</span> index main.html index.html index.htm<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ul><li><code>location</code> 匹配规则:</li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">~ 表示执行一个正则匹配,区分大小写;~* 表示执行一个正则匹配,不区分大小写;^~ 表示普通字符匹配<span class="token operator">=</span> 表示普通字符精确匹配<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><h1 id="高级配置"><a href="#高级配置" class="headerlink" title="高级配置"></a>高级配置</h1><ol><li>服务转发</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">location / <span class="token punctuation">{</span> proxy_pass <span class="token punctuation">[</span>url<span class="token punctuation">]</span>:<span class="token punctuation">[</span>port<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><ol start="2"><li>负载均衡</li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">upstream myserver<span class="token punctuation">;</span> <span class="token punctuation">{</span> ip_hash<span class="token punctuation">;</span> server <span class="token number">172.16</span>.1.1:8001<span class="token punctuation">;</span> server <span class="token number">172.16</span>.1.2:8002<span class="token punctuation">;</span> server <span class="token number">172.16</span>.1.3<span class="token punctuation">;</span> server <span class="token number">172.16</span>.1.4<span class="token punctuation">;</span><span class="token punctuation">}</span>location / <span class="token punctuation">{</span> proxy_pass http://myserver<span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h1 id="Nginx-配置文件正确性验证"><a href="#Nginx-配置文件正确性验证" class="headerlink" title="Nginx 配置文件正确性验证"></a>Nginx 配置文件正确性验证</h1><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">nginx -tnginx -tc <span class="token punctuation">[</span>config_file_address<span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><h1 id="遇到的问题"><a href="#遇到的问题" class="headerlink" title="遇到的问题"></a>遇到的问题</h1><ol><li>访问主页时,控制台报错:”403”;查看日志:<code>open() "/data/www/1.txt" failed (13: Permission denied) ...</code></li></ol><ul><li>检查 Nginx 的启动用户:<code>/etc/nginx/nginx.conf</code></li></ul><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">user root<span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>]]></content>
<categories>
<category> Engineering </category>
</categories>
<tags>
<tag> Nginx </tag>
</tags>
</entry>
<entry>
<title>Matplotlib 基础知识(一)</title>
<link href="2021-04-09/matplotlib-ji-chu-zhi-shi/"/>
<url>2021-04-09/matplotlib-ji-chu-zhi-shi/</url>
<content type="html"><![CDATA[<h2 id="基本概念"><a href="#基本概念" class="headerlink" title="基本概念"></a>基本概念</h2><h3 id="数据格式"><a href="#数据格式" class="headerlink" title="数据格式"></a>数据格式</h3><ul><li><p><code>matplotlib</code> 接受 <code>numpy.array</code> 的数据格式进行绘制。</p></li><li><p><code>pandas</code> <code>numpy.matrix</code> 格式对象最好进行转换。</p> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">import</span> numpy <span class="token keyword">as</span> np<span class="token keyword">import</span> pandas <span class="token keyword">as</span> pd<span class="token keyword">import</span> matplotlib<span class="token punctuation">.</span>pyplot <span class="token keyword">as</span> plta <span class="token operator">=</span> pandas<span class="token punctuation">.</span>DataFrame<span class="token punctuation">(</span>np<span class="token punctuation">.</span>random<span class="token punctuation">.</span>rand<span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span> columns <span class="token operator">=</span> <span class="token builtin">list</span><span class="token punctuation">(</span><span class="token string">'abcde'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>a_asarray <span class="token operator">=</span> a<span class="token punctuation">.</span>valuesb <span class="token operator">=</span> np<span class="token punctuation">.</span>matrix<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>b_asarray <span class="token operator">=</span> np<span class="token punctuation">.</span>asarray<span class="token punctuation">(</span>b<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li></ul><h3 id="调用风格"><a href="#调用风格" class="headerlink" title="调用风格"></a>调用风格</h3><ol><li><p>类似<code>matlab</code>风格,调用 <code>plt</code> 的函数进行绘制,作用于当前的 <code>axes</code> 对象上。</p><ul><li><p>适用于交互编程,如 <code>jupyter-notebook</code> 。</p> <pre class="line-numbers language-python" data-language="python"><code class="language-python">x <span class="token operator">=</span> np<span class="token punctuation">.</span>linspace<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token punctuation">,</span> label<span class="token operator">=</span><span class="token string">'linear'</span><span class="token punctuation">)</span> <span class="token comment"># Plot some data on the (implicit) axes.</span>plt<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token operator">**</span><span class="token number">2</span><span class="token punctuation">,</span> label<span class="token operator">=</span><span class="token string">'quadratic'</span><span class="token punctuation">)</span> <span class="token comment"># etc.</span>plt<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token operator">**</span><span class="token number">3</span><span class="token punctuation">,</span> label<span class="token operator">=</span><span class="token string">'cubic'</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>xlabel<span class="token punctuation">(</span><span class="token string">'x label'</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>ylabel<span class="token punctuation">(</span><span class="token string">'y label'</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>title<span class="token punctuation">(</span><span class="token string">"Simple Plot"</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>legend<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li></ul></li><li><p>面向对象 (OO) 风格,调用 <code>Axes</code> 的函数进行绘制,作用于调用函数的 <code>axes</code> 对象上。</p><ul><li><p>适用于非交互编程,函数复用的场景。</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">x <span class="token operator">=</span> np<span class="token punctuation">.</span>linspace<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token comment"># fig 是 Figure 对象</span><span class="token comment"># ax 是 AxesSubplot 对象</span>fig<span class="token punctuation">,</span> ax <span class="token operator">=</span> plt<span class="token punctuation">.</span>subplots<span class="token punctuation">(</span><span class="token punctuation">)</span>ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token punctuation">,</span> label<span class="token operator">=</span><span class="token string">'linear'</span><span class="token punctuation">)</span> <span class="token comment"># Plot some data on the axes.</span>ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token operator">**</span><span class="token number">2</span><span class="token punctuation">,</span> label<span class="token operator">=</span><span class="token string">'quadratic'</span><span class="token punctuation">)</span> <span class="token comment"># Plot more data on the axes...</span>ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token operator">**</span><span class="token number">3</span><span class="token punctuation">,</span> label<span class="token operator">=</span><span class="token string">'cubic'</span><span class="token punctuation">)</span> <span class="token comment"># ... and some more.</span>ax<span class="token punctuation">.</span>set_xlabel<span class="token punctuation">(</span><span class="token string">'x label'</span><span class="token punctuation">)</span>ax<span class="token punctuation">.</span>set_ylabel<span class="token punctuation">(</span><span class="token string">'y label'</span><span class="token punctuation">)</span>ax<span class="token punctuation">.</span>set_title<span class="token punctuation">(</span><span class="token string">"Simple Plot"</span><span class="token punctuation">)</span>ax<span class="token punctuation">.</span>legend<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li></ul></li></ol><h3 id="概念解释"><a href="#概念解释" class="headerlink" title="概念解释"></a>概念解释</h3><p><img src="/2021-04-09/matplotlib-ji-chu-zhi-shi/elements.png" alt="参与绘图的主要元素"></p><ol><li><p><code>Canvas</code></p><ul><li>实际进行绘图的对象,对用户隐藏。</li></ul></li><li><p><code>Figure</code></p><ul><li><p>类似绘图时使用的画板,上面可以放很多的画纸。</p> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># 只创建画布,不创建绘制区域,可以之后再创建</span>fig <span class="token operator">=</span> plt<span class="token punctuation">.</span>figure<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token comment"># 创建画布,附带一个绘制区域</span>fig<span class="token punctuation">,</span> ax <span class="token operator">=</span> plt<span class="token punctuation">.</span>subplots<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token comment"># 创建画布,附带 2*2 个绘制区域</span>fix<span class="token punctuation">,</span> axs <span class="token operator">=</span> plt<span class="token punctuation">.</span>subplots<span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li></ul></li><li><p><code>Axes</code></p><ul><li>类似绘图时使用的画纸。</li><li>一个 <code>Figure</code> 对象可以有很多个 <code>Axes</code>,但每个 <code>Axes</code> 只能从属于一个 <code>Figure</code>。</li><li>具有2或3个 <code>Axis</code> 对象,即图上的坐标轴。</li><li>函数接口包括:<ul><li>刻度范围:<code>set_xlim</code>, <code>set_ylim</code>;</li><li>标题:<code>set_title</code>;</li><li>坐标轴标签:<code>set_xlabel</code>, <code>set_ylabel</code> 等。</li></ul></li></ul></li><li><p><code>Axis</code></p><ul><li>图上的坐标轴,管理轴上的刻度和刻度名称、范围。</li><li>通过 <code>Locator</code> 和 <code>Formator</code> 控制名称的位置和格式。</li></ul></li><li><p><code>Artist</code></p><ul><li>每个绘制对象都是一个<code>Artist</code>对象,从属于一个<code>Axes</code>对象。</li></ul></li></ol><h3 id="代码抽象"><a href="#代码抽象" class="headerlink" title="代码抽象"></a>代码抽象</h3> <pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">def</span> <span class="token function">plotter</span><span class="token punctuation">(</span>ax<span class="token punctuation">,</span> xdata<span class="token punctuation">,</span> ydata<span class="token punctuation">,</span> <span class="token operator">**</span>params<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">return</span> ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>xdata<span class="token punctuation">,</span> ydata<span class="token punctuation">,</span> <span class="token operator">**</span>params<span class="token punctuation">)</span>data1<span class="token punctuation">,</span> data2<span class="token punctuation">,</span> data3<span class="token punctuation">,</span> data4 <span class="token operator">=</span> np<span class="token punctuation">.</span>random<span class="token punctuation">.</span>randn<span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span>fig<span class="token punctuation">,</span> ax <span class="token operator">=</span> plt<span class="token punctuation">.</span>subplots<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span>plotter<span class="token punctuation">(</span>ax<span class="token punctuation">,</span> data1<span class="token punctuation">,</span> data2<span class="token punctuation">,</span> marker<span class="token operator">=</span><span class="token string">'x'</span><span class="token punctuation">)</span>fig<span class="token punctuation">,</span> <span class="token punctuation">(</span>ax1<span class="token punctuation">,</span> ax2<span class="token punctuation">)</span> <span class="token operator">=</span> plt<span class="token punctuation">.</span>subplots<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span>plotter<span class="token punctuation">(</span>ax1<span class="token punctuation">,</span> data1<span class="token punctuation">,</span> data2<span class="token punctuation">,</span> marker<span class="token operator">=</span><span class="token string">'x'</span><span class="token punctuation">)</span>plotter<span class="token punctuation">(</span>ax2<span class="token punctuation">,</span> data3<span class="token punctuation">,</span> data4<span class="token punctuation">,</span> marker<span class="token operator">=</span><span class="token string">'o'</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="设置后端的不同方式"><a href="#设置后端的不同方式" class="headerlink" title="设置后端的不同方式"></a>设置后端的不同方式</h3><ol><li><p><code>rcParams['backend']</code> 配置文件 <code>matplotlibrc</code></p></li><li><p><code>MPLBACKEND</code> 环境变量</p> <pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token comment"># Linux</span><span class="token operator">></span> <span class="token builtin class-name">export</span> <span class="token assign-left variable">MPLBACKEND</span><span class="token operator">=</span>qt5agg<span class="token operator">></span> python simple_plot.py<span class="token operator">></span> <span class="token assign-left variable">MPLBACKEND</span><span class="token operator">=</span>qt5agg python simple_plot.py<span class="token comment"># Windows</span><span class="token operator">></span> <span class="token builtin class-name">set</span> <span class="token assign-left variable">MPLBACKEND</span><span class="token operator">=</span>qt5agg<span class="token operator">></span> python simple_plot.py<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p><code>matplotlib.use</code></p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">import</span> matplotlibmatplotlib<span class="token punctuation">.</span>use<span class="token punctuation">(</span><span class="token string">'qt5agg'</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></li></ol><h3 id="交互模式与非交互模式"><a href="#交互模式与非交互模式" class="headerlink" title="交互模式与非交互模式"></a>交互模式与非交互模式</h3><ol><li><p>交互模式即时更新图像:PyQt/PySide, PyGObject, Tkinter, wxPython, or macOS/Cocoa。</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">plt<span class="token punctuation">.</span>ion<span class="token punctuation">(</span><span class="token punctuation">)</span>plt<span class="token punctuation">.</span>title<span class="token punctuation">(</span><span class="token punctuation">)</span>ax <span class="token operator">=</span> plt<span class="token punctuation">.</span>gca<span class="token punctuation">(</span><span class="token punctuation">)</span>ax<span class="token punctuation">.</span>set_title<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre></li><li><p>非交互模式调用 <code>show</code> 一次性绘制所有对象。阻塞进程,直到手动关闭绘制的图像窗口。</p><pre class="line-numbers language-python" data-language="python"><code class="language-python">plt<span class="token punctuation">.</span>ioff<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>plt<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre></li></ol>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Matplotlib </tag>
</tags>
</entry>
<entry>
<title>Pytorch 编程的一些坑</title>
<link href="2021-04-05/pytorch-bian-cheng-de-yi-xie-keng/"/>
<url>2021-04-05/pytorch-bian-cheng-de-yi-xie-keng/</url>
<content type="html"><![CDATA[<pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token keyword">import</span> torch<span class="token punctuation">.</span>tensor <span class="token keyword">as</span> Tensortensor <span class="token operator">=</span> Tensor<span class="token punctuation">.</span>randn<span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><h2 id="数据复制"><a href="#数据复制" class="headerlink" title="数据复制"></a>数据复制</h2><h3 id="tensor对象与numpy对象的数据转换"><a href="#tensor对象与numpy对象的数据转换" class="headerlink" title="tensor对象与numpy对象的数据转换"></a><code>tensor</code>对象与<code>numpy</code>对象的数据转换</h3><ol><li><p>共享内存:</p><ul><li><code>tensor</code> -> <code>numpy</code>: <code>tensor.numpy()</code></li><li><code>numpy</code> -> <code>tensor</code>: <code>Tensor.from_numpy()</code></li></ul></li><li><p>不共享内存:</p><ul><li><code>tensor</code> -> <code>numpy</code>: <code>tensor.clone().numpy()</code></li><li><code>numpy</code> -> <code>tensor</code>: <code>tensor.from_numpy(array.copy())</code></li></ul></li></ol><h3 id="tensor-对象之间的复制"><a href="#tensor-对象之间的复制" class="headerlink" title="tensor 对象之间的复制"></a><code>tensor</code> 对象之间的复制</h3><ol><li>共享内存:<code>tensor.detach()</code>,从计算图中分离,不计算梯度</li><li>不共享内存:<code>tensor.clone()</code>,是否计算梯度,看原 <code>tensor</code> 的配置</li><li><strong>Deprecated</strong> 不共享内存:<code>tensor()</code>,是否计算梯度,看构造函数的传参</li></ol><h3 id="cpu-向-gpu-的转换"><a href="#cpu-向-gpu-的转换" class="headerlink" title="cpu 向 gpu 的转换"></a><code>cpu</code> 向 <code>gpu</code> 的转换</h3><ul><li>拷贝到 GPU:<code>tensor.cuda()</code></li><li>转换到 GPU:<code>tensor.to()</code></li></ul><h2 id="Tensor类与tensor对象的操作"><a href="#Tensor类与tensor对象的操作" class="headerlink" title="Tensor类与tensor对象的操作"></a><code>Tensor</code>类与<code>tensor</code>对象的操作</h2><h3 id="从tensor中获取元素"><a href="#从tensor中获取元素" class="headerlink" title="从tensor中获取元素"></a>从<code>tensor</code>中获取元素</h3><ol><li>下标访问得到一个 <code>0-dim</code> 的 <code>scalar</code></li><li>使用下标访问 + <code>item()</code> 得到元素的值</li><li>单元素 <code>tensor</code> 也可以使用 <code>item()</code></li></ol><h3 id="整数类型除法"><a href="#整数类型除法" class="headerlink" title="整数类型除法"></a>整数类型除法</h3><p>计算数据类型为 <code>Tensor.uint8, Tensor.int8, Tensor.int16, Tensor.int32, Tensor.int64</code> 或者张量类型为 <code>Tensor.CharTensor, Tensor.ShortTensor, Tensor.IntTensor, Tensor.LongTensor</code> 的浮点数类型除法时,使用 <code>Tensor.true_divide(tensor1, tensor2)</code></p><h3 id="Tensor-构造的-Tensor-Size-问题"><a href="#Tensor-构造的-Tensor-Size-问题" class="headerlink" title="Tensor 构造的 Tensor.Size 问题"></a><code>Tensor</code> 构造的 <code>Tensor.Size</code> 问题</h3><ol><li><code>Tensor.tensor(3.14159) </code>, size: <code>torch.Size([])</code> ~ <code>scalar</code> 单元素 <code>tensor</code></li><li><code>Tensor.tensor([])</code>, size: <code>torch.Size([0])</code> ~ 空</li><li><code>Tensor.tensor([1, 2])</code>, size: <code>torch.Size([2])</code> ~ <code>tensor</code></li><li><code>Tensor.Tensor(1, 2)</code>, size: <code>torch.Size([1, 2])</code> ~ 规定<code>tensor</code>大小的初始化方式</li></ol><p>综合,传入一个<code>list</code>,两种构造方法都是将<code>list</code>转换成一个<code>tensor</code>;<br>传入数字,<code>Tensor.tensor</code>只接受单个数字用于构造<code>scalar</code>,<code>Tensor.Tensor</code>用于构造对应大小<code>Tensor</code></p><h3 id="tensor-的大小改变"><a href="#tensor-的大小改变" class="headerlink" title="tensor 的大小改变"></a><code>tensor</code> 的大小改变</h3><ol><li><code>tensor.view()</code> 创造一个共享内存的新 tensor</li><li><code>tensor.squeeze(), tensor.unsqueeze()</code> 减少、添加一个维度,创造一个共享内存的新 tensor</li><li><code>tensor.resize()</code> 如果新分配空间大小小于原空间,保留数据不删除</li></ol><h3 id="tensor-的索引"><a href="#tensor-的索引" class="headerlink" title="tensor 的索引"></a><code>tensor</code> 的索引</h3><ol><li><p><code>tensor[0:1, :2]</code>, size: <code>torch.Size([1, 2])</code>; <code>tensor[0, :2]</code>, size: <code>torch.Size([2])</code></p></li><li><p><code>None</code> 相当于 <code>np.newaxis</code>,新增一个轴:<code>tensor[None].shape</code>, size: <code>torch.Size([1, 10])</code></p></li></ol>]]></content>
<categories>
<category> Language </category>
</categories>
<tags>
<tag> Pytorch </tag>
</tags>
</entry>
<entry>
<title>Python Collections, the Container datatypes</title>
<link href="2021-04-04/python/data-structure/collections/01-containers/"/>
<url>2021-04-04/python/data-structure/collections/01-containers/</url>
<content type="html"><![CDATA[<h4 id="1-Counter"><a href="#1-Counter" class="headerlink" title="1. Counter"></a>1. Counter</h4><p>如名字,<code>Counter</code>类用于提供一个方便的计数器</p><ul><li>构造函数<br>支持传入 <code>iterable</code> 或者 <code>mappings</code> 类型的对象进行初始化,最常用传入一个 <code>list</code></li><li><code>elements()</code><br>返回一个迭代器,包含所有计数大于 0 的元素,每个元素出现的次数为他的计数</li><li><code>most_common([n])</code><br>返回前<code>n</code>个最频繁出现的元素</li><li>支持 <code>dict</code>的函数</li></ul>]]></content>
<categories>
<category> Python </category>
</categories>
<tags>
<tag> Collections </tag>
<tag> Data Structure </tag>
</tags>
</entry>
<entry>
<title>Hexo 基础命令介绍</title>
<link href="2021-03-04/hexo-ji-chu-ming-ling-jie-shao/"/>
<url>2021-03-04/hexo-ji-chu-ming-ling-jie-shao/</url>
<content type="html"><![CDATA[<p>欢迎来到 <a href="https://hexo.io/">Hexo</a>! 这是你的第一篇文章。访问 <a href="https://hexo.io/docs/">documentation</a> 来了解更多信息。<br>在使用 Hexo 的过程中如果你遇到了任何的问题,你可以在 <a href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> 找到答案,<br>或者你可以在 <a href="https://github.com/hexojs/hexo/issues">GitHub</a> 进行提问。</p><h2 id="基本操作"><a href="#基本操作" class="headerlink" title="基本操作"></a>基本操作</h2><h3 id="创建新文章"><a href="#创建新文章" class="headerlink" title="创建新文章"></a>创建新文章</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo new <span class="token string">"My New Post"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>更多信息,请访问: <a href="https://hexo.io/docs/writing.html">Writing</a></p><h3 id="运行本地服务器"><a href="#运行本地服务器" class="headerlink" title="运行本地服务器"></a>运行本地服务器</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo server$ hexo s<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><p>更多信息,请访问: <a href="https://hexo.io/docs/server.html">Server</a></p><h3 id="生成静态网页文件"><a href="#生成静态网页文件" class="headerlink" title="生成静态网页文件"></a>生成静态网页文件</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo generate$ hexo g<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><p>更多信息,请访问: <a href="https://hexo.io/docs/generating.html">Generating</a></p><h3 id="部署到远端网站"><a href="#部署到远端网站" class="headerlink" title="部署到远端网站"></a>部署到远端网站</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ hexo deploy$ hexo d<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><p>更多信息,请访问: <a href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p><h2 id="写作技巧"><a href="#写作技巧" class="headerlink" title="写作技巧"></a>写作技巧</h2><h3 id="插入站内文章链接"><a href="#插入站内文章链接" class="headerlink" title="插入站内文章链接"></a>插入站内文章链接</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token punctuation">{</span>% post_link <span class="token punctuation">[</span>文章文件名(不要后缀)<span class="token punctuation">]</span> <span class="token punctuation">[</span>文章标题(可选)<span class="token punctuation">]</span> %<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="插入图片"><a href="#插入图片" class="headerlink" title="插入图片"></a>插入图片</h3><ol><li>安装 <code>hexo-asset-image</code></li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">$ <span class="token function">npm</span> <span class="token function">install</span> hexo-asset-image --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol start="2"><li>更新 <code>_config.yaml</code></li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">post_asset_folder: <span class="token boolean">false</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol start="3"><li>更新 <code>/node_modules/hexo-asset-image/index.js</code> 中的代码,详情请见链接</li></ol><pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token string">"use strict"</span><span class="token punctuation">;</span><span class="token keyword">var</span> cheerio <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">"cheerio"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">// http://stackoverflow.com/questions/14480345/how-to-get-the-nth-occurrence-in-a-string</span><span class="token keyword">function</span> <span class="token function">getPosition</span><span class="token punctuation">(</span><span class="token parameter">str<span class="token punctuation">,</span> m<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> str<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span>m<span class="token punctuation">,</span> i<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span>m<span class="token punctuation">)</span><span class="token punctuation">.</span>length<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">var</span> version <span class="token operator">=</span> <span class="token function">String</span><span class="token punctuation">(</span>hexo<span class="token punctuation">.</span>version<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">)</span><span class="token punctuation">;</span>hexo<span class="token punctuation">.</span>extend<span class="token punctuation">.</span>filter<span class="token punctuation">.</span><span class="token function">register</span><span class="token punctuation">(</span><span class="token string">"after_post_render"</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> config <span class="token operator">=</span> hexo<span class="token punctuation">.</span>config<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>config<span class="token punctuation">.</span>post_asset_folder<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> link <span class="token operator">=</span> data<span class="token punctuation">.</span>permalink<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>version<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span> <span class="token operator">&&</span> <span class="token function">Number</span><span class="token punctuation">(</span>version<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">3</span><span class="token punctuation">)</span> <span class="token keyword">var</span> beginPos <span class="token operator">=</span> <span class="token function">getPosition</span><span class="token punctuation">(</span>link<span class="token punctuation">,</span> <span class="token string">"/"</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token keyword">var</span> beginPos <span class="token operator">=</span> <span class="token function">getPosition</span><span class="token punctuation">(</span>link<span class="token punctuation">,</span> <span class="token string">"/"</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token comment">// In hexo 3.1.1, the permalink of "about" page is like ".../about/index.html".</span> <span class="token keyword">var</span> endPos <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">lastIndexOf</span><span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> link <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>beginPos<span class="token punctuation">,</span> endPos<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> toprocess <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">"excerpt"</span><span class="token punctuation">,</span> <span class="token string">"more"</span><span class="token punctuation">,</span> <span class="token string">"content"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> toprocess<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> key <span class="token operator">=</span> toprocess<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">var</span> $ <span class="token operator">=</span> cheerio<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span>key<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> ignoreWhitespace<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> xmlMode<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> lowerCaseTags<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> decodeEntities<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">"img"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">each</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">$</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">"src"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// For windows style path, we replace '\' to '/'.</span> <span class="token keyword">var</span> src <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">"src"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">"\\"</span><span class="token punctuation">,</span> <span class="token string">"/"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">http[s]*.*|\/\/.*</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">.</span><span class="token function">test</span><span class="token punctuation">(</span>src<span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token operator">!</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">^\s*\/</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">.</span><span class="token function">test</span><span class="token punctuation">(</span>src<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// For "about" page, the first part of "src" can't be removed.</span> <span class="token comment">// In addition, to support multi-level local directory.</span> <span class="token keyword">var</span> linkArray <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">elem</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> elem <span class="token operator">!=</span> <span class="token string">""</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> srcArray <span class="token operator">=</span> src<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">elem</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> elem <span class="token operator">!=</span> <span class="token string">""</span> <span class="token operator">&&</span> elem <span class="token operator">!=</span> <span class="token string">"."</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>srcArray<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">)</span> srcArray<span class="token punctuation">.</span><span class="token function">shift</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> src <span class="token operator">=</span> srcArray<span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">attr</span><span class="token punctuation">(</span><span class="token string">"src"</span><span class="token punctuation">,</span> config<span class="token punctuation">.</span>root <span class="token operator">+</span> link <span class="token operator">+</span> src<span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span>info <span class="token operator">&&</span> console<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">"update link as:-->"</span> <span class="token operator">+</span> config<span class="token punctuation">.</span>root <span class="token operator">+</span> link <span class="token operator">+</span> src<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span>info <span class="token operator">&&</span> console<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">"no src attr, skipped..."</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span>info <span class="token operator">&&</span> console<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token function">$</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> data<span class="token punctuation">[</span>key<span class="token punctuation">]</span> <span class="token operator">=</span> $<span class="token punctuation">.</span><span class="token function">html</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><ol start="4"><li><p>使用 <code>create</code> 命令时自动创建同名文件夹用于存储图片</p></li><li><p>插入图片</p></li></ol><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token operator">!</span><span class="token punctuation">[</span>这是代替图片的文字,随便写<span class="token punctuation">]</span><span class="token punctuation">(</span>head.jpeg<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://www.jianshu.com/p/f72aaad7b852">Pictures</a></p>]]></content>
<categories>
<category> Engineering </category>
</categories>
<tags>
<tag> Hexo </tag>
</tags>
</entry>
</search>