-
Notifications
You must be signed in to change notification settings - Fork 0
/
search.xml
239 lines (114 loc) · 97 KB
/
search.xml
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
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>Colloquium Comp & Info Science (CISC.896.01)</title>
<link href="/2024/01/26/cisc-896-01/"/>
<url>/2024/01/26/cisc-896-01/</url>
<content type="html"><![CDATA[<p>It’s a note for the non-academic thoughts in the process for chasing my PhD far from my home…</p>]]></content>
<categories>
<category> Clutter </category>
</categories>
</entry>
<entry>
<title>DL study</title>
<link href="/2023/03/01/dl-study/"/>
<url>/2023/03/01/dl-study/</url>
<content type="html"><![CDATA[<p>最近因为刚入学,所以有较多时间可以自主学习,就想着把ML&DL重新过一遍,希望自己在学习理论的时候顺便温习一下代码。</p><h2 id="d2l"><a href="#d2l" class="headerlink" title="d2l"></a>d2l</h2><p>如果是把代码过一遍的话,直接跟着<a href="https://zh-v2.d2l.ai/index.html">李沐老师</a>走就行 ( <em>MULI is all you need</em> )。正好也申请到了学校的服务器,直接用vscode远程连接coding。先安装<a href="https://blog.csdn.net/kkxi123456/article/details/103515422">minicoda</a>, 然后follow d2l的setup安装torch即可。在安装的时候可能会遇到<code>IOError: [Errno 28] No space left on device</code>, 参考<a href="https://stackoverflow.com/questions/40755610/ioerror-errno-28-no-space-left-on-device-while-installing-tensorflow">这里</a>解决即可。而在vscode里运行ipynote需要注意python版本(右上角)。</p><p>如果是使用自己的PC来跑代码的话会更简单。先在在<a href="https://repo.anaconda.com/archive/">官网</a>上查找自己需要的版本,然后下载<code>wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh</code>。下载完成后,要先赋权再执行安装程序<code>chmod +x Anaconda3-2023.09-0-Linux-x86_64.sh</code>。在一直按ENTER时要注意,最后一个选项是设置环境变量,最好输入YES。如果输错了也没事,参考<a href="https://blog.csdn.net/wyf2017/article/details/118676765">这里</a>在 <em>.bashrc</em> 中更改路径即可。注意如果需要使用GPU来运行程序的话,安装好conda后使用<code>conda search cudatoolkit</code>来<a href="https://blog.csdn.net/LIWEI940638093/article/details/113811563">查找</a>适用的toolkit。例如我的PC上是创建 <em>py3.9</em> 后使用<code>conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch -c conda-forge</code>来安装相应的库和依赖,当然使用相应的conda安装指令需要参考PyTorch<a href="https://blog.csdn.net/weixin_39450145/article/details/130629569">历史版本</a>。然后跟着李沐老师的教程走installation就行(安装好d2l其实也就安装好了大部分DL所需要的库了)。</p><h2 id="WIFI-ART"><a href="#WIFI-ART" class="headerlink" title="WIFI ART"></a>WIFI ART</h2><p>在设置<a href="https://github.com/Trusted-AI/adversarial-robustness-toolbox">ART</a>工作环境时,一定得注意可运行的库环境,不然总会有乱七八糟的问题,例如tensorflow的<a href="https://blog.csdn.net/qq_33682559/article/details/120310206">版本问题</a>,numpy的<a href="https://stackoverflow.com/questions/74947992/how-to-remove-the-error-systemerror-initialization-of-internal-failed-without">initialization of _internal failed without raising an exception</a>。而因为长时间没有复习Keras了,导致在debug的时候发现连最基本的<a href="https://blog.csdn.net/qq_43190189/article/details/114090368">step</a>的<a href="https://stackoverflow.com/questions/54547681/why-is-step-argument-necessary-when-predicting-using-data-tensors-what-does-t">设置</a>都忘记了。看来复习ML是迫在眉睫了 <span class="github-emoji"><span>😱</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f631.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></p>]]></content>
<categories>
<category> Tech </category>
</categories>
<tags>
<tag> AI_Tricks </tag>
</tags>
</entry>
<entry>
<title>Tiny AI stories</title>
<link href="/2022/12/09/tiny-stories-of-ai/"/>
<url>/2022/12/09/tiny-stories-of-ai/</url>
<content type="html"><![CDATA[<p>这篇文章主要记录笔者作为一个AI菜鸟,在接触有趣或提升生产力的AI工具后的一些体验和感想。那么我们就从 <strong>ChatGPT</strong> 开始吧!</p><h2 id="ChatGPT"><a href="#ChatGPT" class="headerlink" title="ChatGPT"></a>ChatGPT</h2><p>22年12月初火起来的<a href="https://chat.openai.com/">ChatGPT</a>让我对NLP和AI重燃起了初识时的兴趣。因此,笔者按照CSDN上的一篇<a href="https://www.cnblogs.com/chatgpt/p/how-to-register-chatgpt-in-china.html">攻略</a>注册成为了ChatGPT的体验用户(虽然花费了10¥,但比某宝上无良商家动辄收几十好多了<span class="github-emoji"><span>😏</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f60f.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>)。在多次测试后,我发现这个模型即使只是出世不久且限时免费,但它已经可以替代部分程序员的工作了。更可怕的是,不管是中文还是英文,只要问题叙述清晰得当,ChatGPT所给出的solution具备相当的可参考性,足以说明其训练数据之多与泛化能力之强。</p><p>在完成注册后,我就迫不及待问了几个比较简单的问题,其中英文问题有:<em>How to study machine learning</em> 和 <em>How to study math in machine learning</em> ;中文问题则是:<em>如何与心爱的女生相处</em> 。不管是学术还是感情问题,ChatGPT给予的回答都可圈可点。在关于如何学习机器学习的回答中,它不仅鼓励人们学习ML,还给出了更详细的建议,如了解机器学习的基础概念,包括训练数据、特征、标签、模型、目标函数、损失函数、优化算法等;掌握常见的机器学习算法,如回归、分类、聚类、降维、推荐、强化学习等,并学会如何应用这些算法解决实际问题;熟悉常用的机器学习工具和框架,如 TensorFlow、PyTorch、scikit-learn 等,并能够使用这些工具完成基本的机器学习任务。在关于如何学习机器学习中的数学中,它认为了解机器学习中使用的数学模型,如线性回归、逻辑回归、神经网络、支持向量机、贝叶斯网络等,同时需要掌握机器学习中常用的数学方法,如梯度下降、牛顿法、拟牛顿法、随机梯度下降、概率密度估计等,还需要学习机器学习中常用的数学算法,如最小二乘法、最小角回归、主成分分析、聚类算法、卡方检验等。而关于情感问题,读者可以自行查阅,不过个人认为它的回答非常romantic <span class="github-emoji"><span>😘</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f618.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></p><h3 id="ChatGPT对于编程生产力的提升测试"><a href="#ChatGPT对于编程生产力的提升测试" class="headerlink" title="ChatGPT对于编程生产力的提升测试"></a>ChatGPT对于编程生产力的提升测试</h3><p>在测(tiao)试(xi)它几个问题后,我突然灵光一现,把之前写的一个很简单的python输入数组的小功能拿来测试一下,于是问:<em>python输入一维数组的程序</em> ,而它的回复相当简单有趣:</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># 使用 while 循环来接收用户输入</span><span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span><span class="token comment"># # 使用 input 函数来获取用户输入</span> user_input <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"Enter a number (enter 'done' to quit): "</span><span class="token punctuation">)</span><span class="token comment"># # 如果用户输入了 "done",则退出循环</span> <span class="token keyword">if</span> user_input <span class="token operator">==</span> <span class="token string">"done"</span><span class="token punctuation">:</span> <span class="token keyword">break</span><span class="token comment"># # 将用户输入的字符串转换为数字,并将其添加到数组中</span> my_array<span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">(</span>user_input<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></code></pre><p>此时我还相当得意,因为我直接用一句 <code>my_array = list(map(int, input().strip().split()))</code> 就完成了。但突然转念一想,我是不是没有把问题说清楚,所以我又输入了一遍:<em>使用python,输入以空格为间隔的一维数组</em> 。此时,它的答案就和我完成的非常接近了:</p><p>它的第一种方法是使用 Python 内置的 input() 函数来获取用户输入,并使用 split() 方法将其转换为一个字符串列表,然后使用 map() 函数将字符串列表转换为数字列表:</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># 获取用户输入</span>input_str <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token comment"># 将字符串转换为列表</span>input_list <span class="token operator">=</span> input_str<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token comment"># 将列表中的字符串转换为数字</span>input_list <span class="token operator">=</span> <span class="token builtin">map</span><span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">,</span> input_list<span class="token punctuation">)</span><span class="token comment"># 打印输入的数组</span><span class="token keyword">print</span><span class="token punctuation">(</span>input_list<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></code></pre><p>它的第二种方法是使用 numpy 库来更方便地处理数组。例如,您可以使用 numpy.array() 函数来将列表转换为数组,然后使用 numpy.split() 函数将数组分割为多个子数组:</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 comment"># 获取用户输入</span>input_str <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token comment"># 将字符串转换为数字列表</span>input_list <span class="token operator">=</span> <span class="token builtin">map</span><span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">,</span> input_str<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token comment"># 将列表转换为数组</span>input_array <span class="token operator">=</span> np<span class="token punctuation">.</span>array<span class="token punctuation">(</span>input_list<span class="token punctuation">)</span><span class="token comment"># 将数组分割为多个子数组</span>subarrays <span class="token operator">=</span> np<span class="token punctuation">.</span>split<span class="token punctuation">(</span>input_array<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">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token comment"># 打印分割后的子数组</span><span class="token keyword">print</span><span class="token punctuation">(</span>subarrays<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></code></pre><p>果真,我的猜测没有错。原来不是它太菜了,而是我表述太模糊了 <span class="github-emoji"><span>😧</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f627.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span> 实际上,已经有相当多的开发者来开发调用ChatGPT API的插件和软件了,例如中文版的<a href="https://www.bilibili.com/video/BV1s14y1K7fD/?spm_id_from=333.337.search-card.all.click&vd_source=57cec20aa45aa135ba9fdbb99ed82151">VSCODE插件</a>已经有过万下载了。事实上,ChatGPT也可以用来辅助学术写作。例如,我们可以像这个<a href="https://www.bilibili.com/video/BV1NM411U7GG/?spm_id_from=333.788.recommend_more_video.1&vd_source=57cec20aa45aa135ba9fdbb99ed82151">视频</a>一样,先复制一段话,在结尾加上一句 <em>Help me to paraphrase this paragraph more academically</em> (关于使用ChatGPT来进行论文写作实在是争议多多,<a href="https://www.bilibili.com/video/BV1144y1S7G1/?spm_id_from=333.788.recommend_more_video.-1&vd_source=57cec20aa45aa135ba9fdbb99ed82151">someone</a>甚至可以取巧の问论文模板,再把模板填好内容问它)。最后,使用ChatGPT对于他自己的评价来结尾:<em>ChatGPT是由 OpenAI 开发的一种大型自然语言生成模型。它是在 GPT-3 模型的基础上进行改进,旨在更好地处理聊天对话场景中的语言生成任务。我认为 ChatGPT 是一个非常有意义的模型,它拥有更强大的语言理解能力,能够更加自然地与人类进行对话。它可以应用于聊天机器人、翻译系统、问答系统等领域,为人类提供更好的交流和服务。同时,我也认为 ChatGPT 需要进一步改进,例如在语言表达能力、情感理解能力和语境处理能力方面进行增强,使得它能更好地适应复杂的自然语言场景。</em></p><h2 id="你若诚心发问,ChatGPT-will-fix-EVERYTHING"><a href="#你若诚心发问,ChatGPT-will-fix-EVERYTHING" class="headerlink" title="你若诚心发问,ChatGPT will fix EVERYTHING"></a>你若诚心发问,ChatGPT will fix EVERYTHING</h2><p>前几天在测试GPT的design&degug时着实让我惊叹不已。起因是一个平平无奇的AI assignment,其中一题是老师要求使用四种模型,分别是RNN,LSTM,CNN和FNN,来处理一个EEG时序数据集。费了好几个小时终于从网上缝缝补补写了个过得去的LSTM后,突发奇想要是用ChatGPT来搞一个end2end的训练会是怎样。于是乎,直接使用OPENAI很早之前更新的<strong>Advanced Data Analysis</strong>,上传目标数据集(目前只试了直接上传数据集文件但未在大数据集上尝试过),然后加上相关叙述和一些常用的指令:</p><p><em>As an AI model designer and ML master, you should use a deep neural network to do time series classification. The uploaded dataset is from <a href="http://archive.ics.uci.edu/dataset/264/eeg+eye+state">http://archive.ics.uci.edu/dataset/264/eeg+eye+state</a>. Task: Please use Recurrent Neural Network (including standard RNN and LSTM ), Convolutional Neural Network, Feedforward Neural Network in pytorch to do classification and compare their performance.</em></p><p>它的答案会先分析上传的文件,而后输入时你需要表明 <em>You should design well-structured Pytorch codes and show them to me. It’s okay that I can run it on my machine.</em> 这里需要提出两个点,一个是你需要使用Pytorch来设计模型,其次就是你可以在local machine跑代码,不然GPT4在生成代码时常常会因为Pytorch或TF库无法正常工作而报错。而后,他会逐步生成4个model和traning,testing modules。其中traning和testing modules如下:</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># traning phase相当naive,缺失了很多tricks,比如Gradient clipping,Learning rate scheduling等,需自己补足</span><span class="token keyword">def</span> <span class="token function">train_model</span><span class="token punctuation">(</span>model<span class="token punctuation">,</span> train_loader<span class="token punctuation">,</span> criterion<span class="token punctuation">,</span> optimizer<span class="token punctuation">,</span> num_epochs<span class="token operator">=</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">:</span> model<span class="token punctuation">.</span>train<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">for</span> epoch <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span>num_epochs<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">for</span> i<span class="token punctuation">,</span> <span class="token punctuation">(</span>x_batch<span class="token punctuation">,</span> y_batch<span class="token punctuation">)</span> <span class="token keyword">in</span> <span class="token builtin">enumerate</span><span class="token punctuation">(</span>train_loader<span class="token punctuation">)</span><span class="token punctuation">:</span> x_batch<span class="token punctuation">,</span> y_batch <span class="token operator">=</span> x_batch<span class="token punctuation">.</span>to<span class="token punctuation">(</span>device<span class="token punctuation">)</span><span class="token punctuation">,</span> y_batch<span class="token punctuation">.</span>to<span class="token punctuation">(</span>device<span class="token punctuation">)</span> optimizer<span class="token punctuation">.</span>zero_grad<span class="token punctuation">(</span><span class="token punctuation">)</span> outputs <span class="token operator">=</span> model<span class="token punctuation">(</span>x_batch<span class="token punctuation">)</span> loss <span class="token operator">=</span> criterion<span class="token punctuation">(</span>outputs<span class="token punctuation">,</span> y_batch<span class="token punctuation">)</span> loss<span class="token punctuation">.</span>backward<span class="token punctuation">(</span><span class="token punctuation">)</span> optimizer<span class="token punctuation">.</span>step<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token keyword">def</span> <span class="token function">evaluate_model</span><span class="token punctuation">(</span>model<span class="token punctuation">,</span> test_loader<span class="token punctuation">)</span><span class="token punctuation">:</span> model<span class="token punctuation">.</span><span class="token builtin">eval</span><span class="token punctuation">(</span><span class="token punctuation">)</span> correct <span class="token operator">=</span> <span class="token number">0</span> total <span class="token operator">=</span> <span class="token number">0</span> <span class="token keyword">with</span> torch<span class="token punctuation">.</span>no_grad<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">for</span> x_batch<span class="token punctuation">,</span> y_batch <span class="token keyword">in</span> test_loader<span class="token punctuation">:</span> x_batch<span class="token punctuation">,</span> y_batch <span class="token operator">=</span> x_batch<span class="token punctuation">.</span>to<span class="token punctuation">(</span>device<span class="token punctuation">)</span><span class="token punctuation">,</span> y_batch<span class="token punctuation">.</span>to<span class="token punctuation">(</span>device<span class="token punctuation">)</span> outputs <span class="token operator">=</span> model<span class="token punctuation">(</span>x_batch<span class="token punctuation">)</span> _<span class="token punctuation">,</span> predicted <span class="token operator">=</span> torch<span class="token punctuation">.</span><span class="token builtin">max</span><span class="token punctuation">(</span>outputs<span class="token punctuation">.</span>data<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span> total <span class="token operator">+=</span> y_batch<span class="token punctuation">.</span>size<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> correct <span class="token operator">+=</span> <span class="token punctuation">(</span>predicted <span class="token operator">==</span> y_batch<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token builtin">sum</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>item<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token number">100</span> <span class="token operator">*</span> correct <span class="token operator">/</span> total<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></code></pre><p>其他生成整合步骤暂且不提,还有一个惊艳的点就是使用它自己生成的代码来debug是可以准确定位问题,比debug时自己输出layer output简单多了。例如我在使用他提供的LSTM model时遇到了<code>RuntimeError: For unbatched 2-D input, hx should also be 2-D but got 3-D tensor" in "train_model(rnn_model, train_loader, test_loader, criterion, ptimizer)</code>和输入维度不匹配的问题。如果是平时的话肯定看每个layer来debug,但是如果直接输入bug后他可以非常快地定位问题。而当发生改了一次又出现之前的错误时,可以使用 <em>Now there is a previous error: “RuntimeError: For unbatched 2-D input, hx should also be 2-D but got 3-D tensor”. Please go deeper into the codes and help me fix them!</em> 我们可以要求GPT go deeper去解决问题。在解决完code的问题后,我们甚至可以要求它根据自己写的代码来写一篇brief academic thesis (<em>Can you write a brief academic report explaining the four models and why there is a big difference in processing the multivariate, sequential, and time-series dataset “EEG Eye State.arff”?</em>)。</p>]]></content>
<categories>
<category> Tech </category>
</categories>
<tags>
<tag> AI_Tricks </tag>
</tags>
</entry>
<entry>
<title>Personal thoughts of the academic</title>
<link href="/2022/11/08/paper-tricks/"/>
<url>/2022/11/08/paper-tricks/</url>
<content type="html"><![CDATA[<p>作为一个工作过的老油条,我认为参照别人的轮子来创造自己的轮子通常比空手造轮子会顺利很多。因此,在坚定进入学术生涯的目标后,我开始寻找一些前人的经验来提升自己。当然,在向别人学习的过程中,我也会加入自己的思考。事实上,在Prof. Ren的实验室中,本人用7个月的时间跟着师兄师姐走过一段完整的科研过程,也体会到了把idea转化为实验再输出为paper的曲折而充实的感受。因此,笔者在这里记录一下在CUHK学习时所用到的一些关于学术能力培养的资料,以及本人对于学术的一些拙见。如果以下的内容可以对入门科研的新手起到一些帮助作用,那是再好不过了<span class="github-emoji"><span>🙏</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f64f.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></p><h2 id="How-to-read-paper-in-a-fast-speed"><a href="#How-to-read-paper-in-a-fast-speed" class="headerlink" title="How to read paper in a fast speed"></a>How to read paper in a fast speed</h2><h3 id="Before-reading-论文分类"><a href="#Before-reading-论文分类" class="headerlink" title="Before reading: 论文分类"></a>Before reading: 论文分类</h3><p>根据以下三点将论文分成四类:</p><ul><li>可以与同门讨论看看该论文是否值得阅读。</li><li>看引用量(对新论文不合适)。</li><li>自己速览阅读,看改论文是否结果不错,写作流畅(需要有一定的基础,本人暂未达到)。</li></ul><p>而四类分别是:</p><ol><li>完全不需要了解的论文</li><li>需要大致了解的论文,大部分论文属于此类。关于此类,只需要半小时浏览了解其方法,效果和故事脉络即可。只需要进行到阅读环节的前两步即可,即阅读abstract和experiment。同时可以多关注相关的公众号(机器之心等),可以速读一下新出的paper。</li><li>需要精读的论文 <strong>(有启发性和突破性,写作良好,实验结果不错)</strong> 和需要复现的经典论文。不仅需要知道方法和细节,也需要尝试复现,只有自己做出来才是完全的理解。</li></ol><h3 id="学术论文的结构"><a href="#学术论文的结构" class="headerlink" title="学术论文的结构"></a>学术论文的结构</h3><ul><li>Abstract:<strong>背景+问题+方法+结论和结果</strong> 例如(整活唔介意<span class="github-emoji"><span>👽</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f47d.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>):背景:<em>当今用深度学习来水论文的方法已经成为应届毕业生的热门毕业方向之一,如何用深度学习来实现用深度学习来水论文更是研究热点之一。</em> 问题:<em>很多人依旧不知道如何以深度学习为主题来水论文。</em> 方法:<em>我们分析了以深度学习为主题来水论文的范式,并以此构建transformer的深度学习网络,用于自动生成以以深度学习为主题的水文,并可以泛化应用于多个领域。</em> 结果:<em>我们基于transformer的DNN生成了含括理工科,人文社科等各领域的基于深度学习的水文,使得毕业生只需输入他的研究方向就可以自动生成一篇高质量的水毕业论文。</em><br><img src="https://s2.loli.net/2022/11/08/GndsRmzEoNVx51K.png" alt="摘要结构"><br><img src="https://s2.loli.net/2022/11/08/pVvzcfXWkM5DPtb.png" alt="Abstract的简单举例"></li><li>Introduction:介绍问题的背景,本文提出的方法和创新点,大致的实验结果。</li><li>Related work:介绍相关的工作。看别人摘要来写别人做了啥:时间+某人+做了啥尝试解决什么问题+结果+不足。需要5-10篇做相关工作。</li><li>Approach:本文提出的详细方法,和如何实现。</li><li>Experiment:需要相关的实验来支撑approach。多使用数据图像来描述现象和创新点。</li><li>Conclusion:背景+问题+你做了啥(分点)+有哪些不足(分点)。在这里要多展示一些定量的数据。<br><img src="https://s2.loli.net/2022/11/08/iSFujsOLyZdrJmX.png" alt="一个conclusion的简单举例"></li></ul><h3 id="论文阅读の方法论"><a href="#论文阅读の方法论" class="headerlink" title="论文阅读の方法论"></a>论文阅读の方法论</h3><ul><li>不要纠结于某字某句的理解,着重理解本章的故事线。不能在第一遍阅读时就逐字逐句纠结。当卡壳时继续往下读,可能在之后的章节可以获得解答</li><li>先读两遍摘要,从而得知三个点:处理的是什么问题,对这个问题使用什么方法和创新点,这个solution有什么效果。如果有疑问就记录出来继续读。</li><li>直接看Experiment,需要知道 1. 是什么样的实验环境,如数据集,测试方法,性能指标等。2. 作为对比的方法是啥,一般是本领域经典baseline或SOTA。3. 作者的方法取得了什么效果。有些会使用<a href="https://blog.csdn.net/DragonGirI/article/details/107356658">消融实验(ablation study)</a>来对比不同角度下solution中不同部分的efficiency。有些也会使用对比实验(同领域的效果对比)。<br><img src="https://s2.loli.net/2022/11/08/yCKaJF4DiS9bYP1.png" alt="What is the ablation study?"></li><li>然后看intro(详细版的abstract),读完后应该了解到本文的故事线和创新点。</li><li>再看approach。对于第三类论文,需要慢下来反复阅读和推导,最后可以讲述给别人。</li><li>最后related work。这一部分一般最后撰写。要是对该领域熟悉的话,可以略看。若是想深入了解,可以看经典的survey paper。</li><li>读完整篇论文后,可以从审稿人的视角来思考来加深理解,让自己来回答以下四个问题:该论文试图解决什么问题,作者提出了什么方法和创新点,方法取得了什么效果,他的方法有什么局限性和改进之处。也可以像Prof. Andrew Ng分享的那样来问自己:What did the authors try to accomplish? What were the key elemnts of the approach? What can you use yourself? What other references do you want to follow?</li></ul><h2 id="Essay-reading-tips-of-my-JIYOU"><a href="#Essay-reading-tips-of-my-JIYOU" class="headerlink" title="Essay reading tips of my JIYOU"></a>Essay reading tips of my JIYOU</h2><ol><li>多阅读他人的文章和算法,理解透彻,然后思考有什么改进的地方。有两种发新paper的方法:改进他人的方法,或者改应用方向(例如smart grid一篇,network又是一篇)。</li><li>最开始不要浮躁,静下心来读文章。对于本领域的经典和好文章直接吃透花时间去磨,阅读完后做好总结,有能力就复现。精读个二十篇。不会疯狂网上查,搞明白再接着看。<ul><li>看完一篇论文,要明白他的故事线,应用在什么问题上,有哪些关键点,使用了什么方法,最后效果怎么样,和其它方法比呢?</li><li>刚开始,一篇论文看懂十几天都不夸张,到后面就快了,直接扫一眼摘要进入核心。久而久之,你也能想出一些attractive的东西,然后就开始实现,成功了paper就有了。</li></ul></li></ol><h2 id="How-about-Zotero"><a href="#How-about-Zotero" class="headerlink" title="How about Zotero"></a>How about Zotero</h2><ol><li>Zotero tips in ZHIHU: <a href="https://zhuanlan.zhihu.com/p/113170814">优雅地用 Zotero 进行文献管理和论文写作</a>,<a href="https://zhuanlan.zhihu.com/p/28325366">Zotero 5.0使用教程/坚果云同步盘和Zotero的配置过程详解</a>,<a href="https://zhuanlan.zhihu.com/p/183605019">VS Code + LaTex + Zotero 写作毕业论文</a>,<a href="https://zhuanlan.zhihu.com/p/499398620">zotero配置全流程——安装、同步与插件</a>,<a href="https://zhuanlan.zhihu.com/c_1071081428967743488">一些软件使用过程中的技巧,如Endnote, zotero,R等(进入该链接的github下载pdf)</a>。</li><li>Zotero tips in CSDN: <a href="https://lolitasian.blog.csdn.net/article/details/124133119?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-124133119-blog-110805704.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-124133119-blog-110805704.pc_relevant_default&utm_relevant_index=2">论文翻译阅读 + 文献管理 + markdown笔记 + 多设备同步 + 一键导出bib参考文献</a>,<a href="https://blog.csdn.net/l903445981/article/details/119960684?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-5-119960684-blog-119491424.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-5-119960684-blog-119491424.pc_relevant_paycolumn_v3&utm_relevant_index=9">Zotero文献管理软件使用指南——入门篇</a>,<a href="https://blog.csdn.net/lovelyed/article/details/119491424">Zotero快速上手指南</a>。</li><li>Zotero tips in Bilibili: <a href="https://space.bilibili.com/402732659">zoterob站教学up</a>,<a href="https://www.bilibili.com/video/BV1c64y1s7oo?is_story_h5=false&p=1&share_from=ugc&share_medium=android&share_plat=android&share_session_id=0946dfa1-e8a3-4cd9-88f9-869e1c5732dc&share_source=WEIXIN&share_tag=s_i&timestamp=1660675015&unique_k=xqDoKRU&vd_source=57cec20aa45aa135ba9fdbb99ed82151">跨设备文献管理</a>。在使用zotero时可以这样做:1. 一般重点是<font color="Yellow">黄色</font>,需要拓展了解是<font color="Blue">蓝色</font>,不会的术语是<font color="Red">红色</font>。2. 看文章的时候可以在条目笔记里记录自己的问题,一边问一边在文章里找答案,可以直接复制进去。</li></ol><h2 id="Something-about-LaTex"><a href="#Something-about-LaTex" class="headerlink" title="Something about LaTex"></a>Something about LaTex</h2><ol><li><a href="https://blog.csdn.net/xovee/article/details/109378160">在LaTeX中调整图片和表格的位置</a>,两个表格并列的话可以看<a href="https://blog.csdn.net/qq_36158230/article/details/124468943">这里</a>。实际在LaTex插入表格可以在这个<a href="https://www.tablesgenerator.com/">网站</a>上copy现成的代码。</li><li>在LaTeX正文中加粗字体可以看这几个函数:<ul><li><code>\textbf{}</code>:文本环境加粗。在数学环境使用的话,会使斜体效果消失。并且无法输出加粗的希腊字母</li><li><code>\mathbf{}</code>:会变为粗体,但同样会导致数学字母斜体形式的丢失</li><li><code>\boldmath{}</code>:数学环境里可以加粗且不会使斜体消失,需要添加amsmath宏包</li><li><code>\boldsymbol{}</code>:可以对希腊字母加粗,需要添加amsmath宏包</li><li>在数学环境中,可以添加宏包<code>\usepackage{bm}</code>, 使用<code>\bm{}</code>命令加粗。但是在 <em>xelatex</em> 或 <em>Luatex</em> 引擎的unicode-math环境中中,<code>\bm{}</code>会报错。此时可以使用一下三个函数:<code>\symbfit{}</code> 加粗,且有斜体效果;<code>\symbf{}</code> 加粗,没有斜体效果;<code>\mathbfcal{}</code> 加粗的 <em>\mathcal</em> 字体</li></ul></li><li>在Markdown中添加LaTex公式:可以参考<a href="https://www.jianshu.com/p/70917dab822b">这里</a>。例如,行内公式使用<code>$f(x)=ax^2+bx+c$</code>,而行间居中可以使用<code>$$f(x)=ax^2+bx+c$$</code>。</li><li>在LaTex中使用引用的话一般有两种方式,第一种是导入<code>\begin{thebibliography}{99}</code>,使用<code>\bibitem {ref1}</code>来添加引用文献。几乎没啥优点,缺点是需要手动排序,就是当文献很多的时候极其麻烦。第二种是新建并写入”.bib”文件,然后导入<code>\bibliographystyle{ieee}</code> or <code>\usepackage[backend=bibtex,style=ieee,natbib=true]{biblatex}</code> (其中的参数设置可以参考这两个网址:<a href="https://www.overleaf.com/learn/latex/Bibliography_management_in_LaTeX">1</a>, <a href="https://www.overleaf.com/learn/latex/Biblatex_bibliography_styles">2</a>),然后引用<code>\addbibresource{thesis.bib} % The filename of the bibliography</code>。强烈建议第二种方法,因为只需要从文献引用处复制 <em>bib</em> 格式即可。更多可查看<a href="https://mp.weixin.qq.com/s?__biz=MzIxMDY1OTk1OA==&mid=2247484341&idx=1&sn=086fa984d1c0b663f2e395630fe4a250&chksm=97607caca017f5ba045549d573bf57e195f5a6e76d6bcd4f253513183e713d5917b9f4fc023a&scene=21#wechat_redirect">这里</a>。</li></ol><h2 id="ARXIV发文建议"><a href="#ARXIV发文建议" class="headerlink" title="ARXIV发文建议"></a>ARXIV发文建议</h2><ol><li><a href="https://www.zhihu.com/question/48073196/answer/2054702995">记得删注释</a>。</li><li><a href="https://zhuanlan.zhihu.com/p/434085913">Overleaf发文到arxiv</a>。在overleaf编辑时,可以使用 <em>源码</em> 格式来让grammarly工作(记得在插件处关闭automatic correction,不然会导致公式格式错误)。</li></ol><h2 id="References"><a href="#References" class="headerlink" title="References"></a>References</h2><ul><li><a href="https://www.bilibili.com/video/BV13v4y1w7KG?p=1&share_medium=android&share_plat=android&share_session_id=b0ec536a-5f9f-4f31-a2e6-f428ef786da0&share_source=WEIXIN&share_tag=s_i&timestamp=1656091890&unique_k=5OtWKm3&vd_source=57cec20aa45aa135ba9fdbb99ed82151">如何高效阅读学术论文</a></li><li><a href="https://www.bilibili.com/video/BV1vZ4y1177g?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=57cec20aa45aa135ba9fdbb99ed82151">学术论文的标题,摘要,引言,图标描述和结论之总结</a></li><li><a href="https://www.bilibili.com/video/BV1DX4y1d7Nd/?spm_id_from=333.999.0.0&vd_source=57cec20aa45aa135ba9fdbb99ed82151">让ChatGPT教会你高效率读论文</a></li><li><a href="https://www.youtube.com/watch?v=733m6qBH-jI&ab_channel=StanfordOnline">Stanford CS230: Deep Learning | Autumn 2018 | Lecture 8 - Career Advice / Reading Research Papers</a></li></ul>]]></content>
<categories>
<category> Clutter </category>
</categories>
<tags>
<tag> Academic </tag>
</tags>
</entry>
<entry>
<title>Convolutional neural networks in DL</title>
<link href="/2022/10/06/cnn-in-dl/"/>
<url>/2022/10/06/cnn-in-dl/</url>
<content type="html"><![CDATA[<h2 id="Preface-by-the-author"><a href="#Preface-by-the-author" class="headerlink" title="Preface by the author"></a>Preface by the author</h2><p>最近在复习ML时看到一篇五年前的CNN<a href="https://adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/">文章</a>(这位印度小哥后续的博客也相当attractive),作者写的相当深入浅出,所以本人特意准备以此为baseline来描述一下个人对于NN的理解。关于 <em>Convolutional Neural Networks</em>, 本人有幸在CUHK选修过<a href="https://www.ee.cuhk.edu.hk/en-gb/people/academic-staff/professors/prof-hongsheng-li">Prof. Hongsheng</a>(今年爆火的几篇Transformer也有李老师的参与)的 <em>ML for SP Applications</em> 。虽然最后‘喜提’B+(别问,问就是人菜瘾大 <span class="github-emoji"><span>😧</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f627.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>),但是这门课对于我最后的research thesis相当有用。但是因为本人的tech stack偏向于IoT和embedded systems,数学功底不扎实。如有谬论,敬请指正(暂未集成评论功能,欢迎通过GitHub的<a href="https://github.com/MacuXavier/MacuXavier.github.io/issues">issue</a>来评论,唔该!)。</p><h2 id="Disclaimer"><a href="#Disclaimer" class="headerlink" title="Disclaimer"></a>Disclaimer</h2><p>由于该文章主要是用于本人的学习总结和复习,所以行文风格略为洒脱。另外,本人思维较为发散,如果你发现文章中经常乱入其他内容的知识,敬请谅解 <span class="github-emoji"><span>😎</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f60e.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></p><h2 id="Abstract"><a href="#Abstract" class="headerlink" title="Abstract"></a>Abstract</h2><p><em>Convolutional neural networks</em> 听起来像是神经科学的一个专业名词,但它其实是一个AI中的重要部分(即使无较大关联,但是NN对于研究人类的学习模式有很重要的启发作用,可以参考这两个文章:<a href="https://www.zhihu.com/question/380335971">人脑是怎么防止梯度消失和梯度爆炸的</a>, <a href="https://zhuanlan.zhihu.com/p/33006526">详解深度学习中的梯度</a>)。它可以追溯到上世纪中期(具体时间忘记了),但到了2012年的时候,在ImageNet的比赛中才崭露头角。从此之后,多种魔改的NN模型层出不穷,如ResNet等。它们大部分是通过修改网络的结构和组成部分(如激活函数,Loss function等)来追求SOTA。因此,如果新人可以先对一个基本的NN了解的话,那么也能大致清楚DL为什么workable。</p><h2 id="Introduction"><a href="#Introduction" class="headerlink" title="Introduction"></a>Introduction</h2><p>在作者看来,智慧物种本身就是一群掌握了一定 <strong>学习->应用</strong> 能力的生物,包括人类。在丛林中,食肉动物会通过观察猎物的外形特征来判断是否可以将其作为捕猎对象。在城市里,人们饲养的宠物多数时间可以通过主人的情绪表现出不同的行为。而人类在数千万年间的进化中,凭借出色的 <strong>学习 (ability to be trained)</strong> 能力逐渐成为了万物的领跑者。因此,深度学习理论并未被提出的亿万年间,其雏形便隐隐发挥着不小的作用。而随着对人类神经科学的探索,研究人员们已经逐渐理清人类的学习模式与AI之间的共通之处。</p><h2 id="Methods"><a href="#Methods" class="headerlink" title="Methods"></a>Methods</h2><p>以人类为例,当一个可以正常思考的人来判断站在他面前的是鸟还是狗时,他可以通过被观察对象的特征来进行判断。例如,这个对象是否有爪子,是否有翅膀,是否有尾巴等。事实上,CNN模型在进行这样的分类判断(即classification)时,也可以通过这样的 <em>特征</em> 来进行分类。但在processing中,它会将人眼可见的high-level信息转为low-level再进行判断(<a href="https://blog.csdn.net/qq_30121457/article/details/108918519">图像中语义信息、高层和底层特征</a>)。而由于0和1组成了计算机的底层运算逻辑,所以运行在计算机上的模型所看到的,也是由多个数字矩阵所组成的一张图片。例如对于一张分辨率为 <em>256 x 256</em> 的图片,DL算法会将其当作是一个 <em>256 * 256 * 3</em> 的矩阵(这个3是因为RGB图像由三种颜色组成)。因此,CNN模型的初始input一般来说就是一个相似的矩阵。</p><p>在DL中,一个CNN是由很多layers组成,可以大致分为convolutional, nonlinear, pooling (downsampling/subsampling,用以缩小feature map。上,下采样可以看<a href="https://blog.csdn.net/lzw17750614592/article/details/85019761">这里</a>,而<a href="https://lizhifun.blog.csdn.net/article/details/114368433?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-114368433-blog-47727277.pc_relevant_aa2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-114368433-blog-47727277.pc_relevant_aa2&utm_relevant_index=2">pooling就是subsample的一种</a>), 和fully connected layers。经过fully connected后,模型通常会输出一个多分类的1*N的矩阵(N为分类数),而该矩阵的每个元素相当于输入对象属于某一分类的probability。</p><p><img src="/2022/10/06/cnn-in-dl/Proposed-adopted-Convolutional-Neural-Network-CNN-model.png" alt="一个经典的CNN结构"></p><h3 id="First-layer-Conv"><a href="#First-layer-Conv" class="headerlink" title="First layer: Conv"></a>First layer: Conv</h3><p>经过预处理的有着规定大小的data传入CNN中时,它们要经历的第一道关卡便是 <strong>convolutional layer</strong> 。卷积层(也作filter或kernel)的概念源自于信号处理中的卷积运算,因为研究人员发现了其 <em>特征抽取</em> 的特性后,将其应用在神经网络中来获得feature map。它的基本运算法则是:在设置好hyperparameters(例如stride,padding等)后,对应的元素相乘后累加,最后获得一个数。事实上,如果将filter具象化,我们可以很轻易地看出,输出的这个数可以表示filter对应的特征采样部分所检测到的图像信息。在下面的例子中,input是一个 <em>5 * 5</em> 的二维矩阵(实际上输入常常是 <em>N * N * 3</em> ),那么我们可以使用一个 <em>3 * 3</em> 的filter来进行采样,具体的处理过程可以参考下面的动图。而在实际应用时,CNN的conv layer往往有多个filter,以此来获得压缩后的尽可能多的输入信息。</p><p><img src="https://media.giphy.com/media/i4NjAwytgIRDW/giphy.gif" alt="Conv layer的计算示例"></p><p>笔者在最开始理解CNN的时候只是单纯地从Linear Algebra的角度来理解,即把conv layer的操作当作是矩阵间的运算来获得feature map。事实上,我们也可以将filter具象化( <em>矩阵->图像</em> )来更直接地理解它为什么workable。如下图这个简化的例子,如果我们将这个 <em>7 * 7</em> 的filter可视化后,会发现这是一条曲线。当使用这个filter去进行卷积操作时,越是与其有交集的图片,conv layer’s output就相对越大。相反的是,越是与其没有交集的图片,它的output就会越小,这也是为什么一个conv layer通常会需要多个filter的原因(来提取尽可能多的feature)。这就是上述的 <em>特征抽取</em> 的原理。因此,我们可以更清晰地理解卷积层的作用。而随着卷积层的增加(go deeper),因为feature map的逐渐精简,后面的filter会有越来越大的receptive field for the original input volume(They are more responsive to a larger region of pixel space)。这也是NN一个有趣的地方</p><p><img src="/2022/10/06/cnn-in-dl/Pixel2image.png" alt="可视化一个简单的kernel"></p><h3 id="Last-layer-Fully-Connected-Layer"><a href="#Last-layer-Fully-Connected-Layer" class="headerlink" title="Last layer: Fully Connected Layer"></a>Last layer: Fully Connected Layer</h3><p>我们先省略从first layer到last layer中间的nonlinear and pooling layers,直接来看最简单的Fully Connected Layer(因为对他们的介绍会耗费大量的时间,笔者先从最容易理解或者帮助新手入门的角度来写)。FC通常是NN的 <em>特征抽取</em> 的最后一层,它的input通常是一个一维向量(不管这个向量是由上一层的conv,pooling还是ReLU输出的),而FC’s output通过softmax <em>(kernel initializer)</em> 后会是一个1*N的矩阵(N为分类数)。举个例子,对于一个输出目标为10分类(如<a href="https://www.cs.toronto.edu/~kriz/cifar.html">CIFAR10</a>)的model来说,FC的输出可以是[0 .1 .1 .75 0 0 0 0 0 .05],就代表属于a0的可能性是0,a1的可能性是0.1,以此类推。由此可见,FC的工作方式是检查上一层输出的feature map,并决定哪些特征对应于具体的class。如上所述,如果该feature map来自于dog类,那么它里面肯定有有一个较高的值来表示四条腿或者dog face。</p>]]></content>
<categories>
<category> Tech </category>
</categories>
<tags>
<tag> AI_Tricks </tag>
</tags>
</entry>
<entry>
<title>Git & GitHub</title>
<link href="/2022/09/29/git-github-notes/"/>
<url>/2022/09/29/git-github-notes/</url>
<content type="html"><![CDATA[<h2 id="Abstract"><a href="#Abstract" class="headerlink" title="Abstract"></a>Abstract</h2><p>这篇笔记主要记录如何在日常的轻量化开发中使用git和GitHub作为辅助工具提升工作效率。该笔记主要参考<a href="https://www.bilibili.com/video/BV1db4y1d79C/?spm_id_from=333.999.0.0&vd_source=57cec20aa45aa135ba9fdbb99ed82151">40 分钟学会 Git,日常开发全程大放送&搭配Github</a>, <a href="https://blog.csdn.net/weixin_43806049/article/details/124963415">Git上传文件代码到GitHub</a>和<a href="https://www.bilibili.com/video/BV1s3411g7PS/?spm_id_from=333.999.0.0&vd_source=57cec20aa45aa135ba9fdbb99ed82151">git、github 保姆级教程入门</a>来step by stepの操作,而如何安装Git可以看<a href="https://blog.csdn.net/mukes/article/details/115693833">这里</a>。当然,我也根据做个笔记重新复习了一下git的基本操作,新建了一个存储 <em>OCT Related PyCodes</em> 的repo在<a href="https://github.com/MacuXavier/OCT_Related_PyCodes">这里</a> <span class="github-emoji"><span>😄</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f604.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></p><h2 id="Git常用的命令"><a href="#Git常用的命令" class="headerlink" title="Git常用的命令"></a>Git常用的命令</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 function">git</span> clone <span class="token string">'git地址'</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> init<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> <span class="token function">add</span> <span class="token parameter variable">-A</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> commit <span class="token parameter variable">-m</span> <span class="token string">'提交信息'</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> log <span class="token parameter variable">--stat</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> checkout <span class="token string">'filename'</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> reset HEAD^1<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> checkout <span class="token parameter variable">-b</span> <span class="token string">'branchname'</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> branch<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> checkout <span class="token string">'branchname'</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> branch <span class="token parameter variable">-D</span> <span class="token string">'branchname'</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> merge <span class="token string">'branchname'</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><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 function">git</span> push <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><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">git</span> pull <span class="token punctuation">..</span>.<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="Notes"><a href="#Notes" class="headerlink" title="Notes"></a>Notes</h2><ol><li>本地新建代码仓库后链接到online repo:建立完代码文件夹后,在文件夹路径下使用<code>git init</code>,此时文件夹里会出现一个 <em>.git</em> 的文件夹。而后使用<code>git add .</code>和<code>git commit -m 'initial commit'</code>,将暂存区代码提交至本地仓库。在GitHub新建仓库后,使用<code>git remote add origin https://github.com/MarcuXu/Garbage-Classification-Device.git</code>将本地仓库链接到线上仓库。参考链接在<a href="https://blog.csdn.net/weixin_46535880/article/details/119155123">这</a>。</li><li>为什么尽量使用switch而不是checkout看<a href="https://blog.csdn.net/wpw2000/article/details/115895848?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-115895848-blog-121375881.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-115895848-blog-121375881.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=1">这里</a>。</li><li>由于网络不稳定(dddd),有时直接使用vscode的图像化操作push不上GitHub,这时候就得记住用 <code>git push</code>。</li><li><em>first commit</em> 时可以现在GitHub创建新的repo,然后找一个文件夹<code>git clone ...</code>。再将想要upload的代码copy到新生成的文件夹下,按步进行 <em>add,commit,push</em> 操作即可。而创建新repo和git init前后顺序并不重要,因为之后都是通过<code>git push -u origin main</code>将代码push到GitHub上。</li><li>在使用IDE时,可以学一下其自带的git简化工具,比如VSCODE或者IntelliJ,可以帮助我们更简单的进行开发和维护。</li><li>使用VSCODE来远程提交代码时,会发生 <em>RPC failed; HTTP 408 curl 18 HTTP/2 stream 7 was reset</em> 的<a href="https://stackoverflow.com/questions/59282476/error-rpc-failed-curl-92-http-2-stream-0-was-not-closed-cleanly-protocol-erro">错误</a>。必须强制使用 HTTP 版本 1.1 来使用 git。在CMD输入以下指令即可<code>git config --global http.version HTTP/1.1</code>。注意出现这样的错误时,使用VSCODE自带的提交工具并不能解决,必须用<code>git push -u origin main</code>来提交。</li></ol>]]></content>
<categories>
<category> Tech </category>
</categories>
<tags>
<tag> SW_Tricks </tag>
</tags>
</entry>
<entry>
<title>Memory in HK & CUHK</title>
<link href="/2022/09/19/memory-hk-cuhk/"/>
<url>/2022/09/19/memory-hk-cuhk/</url>
<content type="html"><![CDATA[<h2 id="08-2021-08-2022"><a href="#08-2021-08-2022" class="headerlink" title="08.2021-08.2022"></a>08.2021-08.2022</h2><p>于香港中文大学就读的一年多时间里,本人在实验室肝代码之余(感谢师兄师姐带菜鸡本鸡入门medical robotics)到处瞎走。在一边发福一边掉发一边疯狂肝ddl时,我认识了很多好朋友(小杰钊哥家正sifan岚姐jiawei桶哥qiweizewei等等等<span class="github-emoji"><span>🙈</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f648.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>班里个个都是人才,说话又好听,超喜欢在里面啦<span class="github-emoji"><span>😻</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f63b.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>)。而在赶due的时候通过各种机缘巧合(临时抱佛jio)认识了不少大佬。在喜获170的历史新高体重的同时(回来两个多月150了嘿嘿嘿<span class="github-emoji"><span>😜</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f61c.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>),我也拍摄了不少值得纪念的照片。为了弥补本人的poor memory,我先贴一部分,以防在哪拍的都忘记了…</p><h3 id="08-2021"><a href="#08-2021" class="headerlink" title="08.2021"></a>08.2021</h3><p>在正式启程去HK前,我先去SZ拜访了本科的两个基友(Master和小儿子)。跟着他们在SZ厮混几天后,我怀着激动和一丝担忧向着未知的城市出发,而这次求学也是我人生的第一次离境(希望不是最后一次)<span class="github-emoji"><span>😢</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f622.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span><br><img src="/2022/09/19/memory-hk-cuhk/NANKE_DOOR.jpg" alt="等Master带我去吃饭,yysy南科的门口就展现出一股浓浓的科研风"></p><p>经过重重艰险,本人于15号抵达HK。美中不足的是,开局一张床,床还是问室友借的<span class="github-emoji"><span>😨</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f628.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>。完成隔离后,我在Carousell买了床和IKEA大桌子再叫LALAMOVE从港岛拉回来(第一次走出家和local交流),耗费几天的搭建终于达到了基本的住宿条件<span class="github-emoji"><span>😋</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f60b.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span><br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20210823_172123-01.jpeg" alt="桌子到后coding条件基本成型"></p><h3 id="09-2021"><a href="#09-2021" class="headerlink" title="09.2021"></a>09.2021</h3><p>在orientation初遇小杰和钊哥(EE老大哥),后面也慢慢认识了不少好朋友。虽然第一次体验线下的全英授课非常痛苦,不过幸好逐渐适应了上课的节奏。<br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20210903_134043-01.jpeg" alt="第一次去大图拍摄玄学石门,祈祷一年后的自己可以顺利毕业"><br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20210924_164401-01.jpeg" alt="在校史馆膜拜HK仅有的两枚Nobel Gold Medal"><br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20210924_164846-01.jpeg" alt="杨振宁教授在us念大学时的物理笔记(作为凡人真没看懂)"><br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20210924_164927-01.jpeg" alt="杨振宁教授的实验手稿(确实和本科的大物实验有点像hhh)"></p><p>正式上课两三周后,钊哥和岚姐(两位运动达人)就开始组织大家去麦理浩径hiking。而这也是我第一次在HK欣赏到了在城市圈中理应难得的旖旎风光<span class="github-emoji"><span>😮</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f62e.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span><br><img src="/2022/09/19/memory-hk-cuhk/MAILIHAOJING_0.jpg" alt="五人小分队的无人机合影"></p><h3 id="11-2021"><a href="#11-2021" class="headerlink" title="11.2021"></a>11.2021</h3><p>在淦完好几门课的期中考后,钊哥他们组织起人数最多的一次登山。这次我做好了充足的准备,带好了登山杖,满满的水和能量棒,甚至还有垃圾袋/(ㄒoㄒ)/~~<br><img src="/2022/09/19/memory-hk-cuhk/dadongshan_1.jpg" alt="因为大东山是麦理浩径最难走的一段,所以走到后面,队伍走的稀稀拉拉"><br><img src="/2022/09/19/memory-hk-cuhk/dadongshan_2.jpg" alt="hiking大合影(jiawei都没看镜头啊这,还有最右那个是路人hhh)"><br><img src="/2022/09/19/memory-hk-cuhk/dadongshan_0.jpg" alt="现在看这张照片时都会想起石头下就是悬崖(恐高实锤了,感谢桶哥的授权)"></p><h3 id="01-2022"><a href="#01-2022" class="headerlink" title="01.2022"></a>01.2022</h3><p>熬过12月的考试周后,一月初还放了两周假。但是两周假对于当时尚未通关的内地生来说杯水车薪。所以那时我可以一边慢悠悠地准备research project,一边和同学们出去走走玩玩(结果到四月我就后悔为啥不在一月就把实验做完了<span class="github-emoji"><span>🙉</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f649.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>)。<br><img src="/2022/09/19/memory-hk-cuhk/WEIGANG_BAR.jpg" alt="第一次去HK的清吧喝酒"><br><img src="/2022/09/19/memory-hk-cuhk/WEIGANG_NG.jpg" alt="喝完酒和小伙伴们一起去维港跨(chui)年(feng)"></p><h3 id="04-2022"><a href="#04-2022" class="headerlink" title="04.2022"></a>04.2022</h3><p>整个四月差点没被ddl搞到gg。一边在后悔为啥选了这么多EE的课(有次在大膳堂吃饭,突然听两IE的在聊为什么不选EE的课,其中一个说EE的课grade curve贼严还难,<span class="github-emoji"><span>🐶</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f436.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>都不选),一边debug和淦final project到十二点。那段时间的心理压力巨大,恨不得再多生一个脑子和一双手来帮我赶due<span class="github-emoji"><span>🐼</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f43c.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span><br><img src="/2022/09/19/memory-hk-cuhk/DATU_0.jpg" alt="在四月,每天晚上吃完饭就得来大图赶due"><br><img src="/2022/09/19/memory-hk-cuhk/DATU_1.jpg" alt="就算是熬夜,阿尼亚也会陪着你的wakuwaku"></p><h3 id="06-2022"><a href="#06-2022" class="headerlink" title="06.2022"></a>06.2022</h3><p>下午带仇兄去CU最好吃的茶餐厅用膳后,因为其懒狗对象不想陪他爬山,我被他半哄半骗去爬太平山上玩夜摄。晚上下山的时候,我们还遇到了箭猪,最后侥幸安全逃离<span class="github-emoji"><span>😰</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f630.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></p><p><img src="/2022/09/19/memory-hk-cuhk/CUHK_DOOR.jpg" alt="HKUer眼里的CU"><br><img src="/2022/09/19/memory-hk-cuhk/IMG_5436-01.jpeg" alt="半山腰上看到的午后维港"><br><img src="/2022/09/19/memory-hk-cuhk/IMG_5440-01.jpeg" alt="驻港英军营地旧址现景"><br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20220623_200851-01.jpeg" alt="太平山狮子亭俯瞰图 (和StreeX的Down封面同款!)"><br><img src="/2022/09/19/memory-hk-cuhk/IMG_5475-01.jpeg" alt="太平山顶栈道俯瞰图(so fxxking cyberpunk!!!)"></p><h3 id="07-2022"><a href="#07-2022" class="headerlink" title="07.2022"></a>07.2022</h3><p>晚上在lab淦完代码,我在独自回家的路上经过WHMY楼。对比上学期还可以和小杰钊哥家正等好友热热闹闹的回家,我当时就感受到了深深的落寞。WHMY对面的楼景如以往静美,但是打闹的朋友却不在身边了。<br><img src="/2022/09/19/memory-hk-cuhk/IMG_20210908_212223-01.jpeg" alt="去年九月ML课后的拍摄"><br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20220718_212751-01.jpeg" alt="今年RA期间独自回家的拍摄"></p><p>几日后和桶哥约着去图书馆。在山顶食堂进食后,我们去著名的天人合一(感谢桶哥的提醒)散步,偶然发现人少且天空明美,故拍几张。<br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20220721_185301-01.jpeg" alt="天人合一:海"><br><img src="/2022/09/19/memory-hk-cuhk/MVIMG_20220721_185429-01.jpeg" alt="天人合一:overview"><br><img src="/2022/09/19/memory-hk-cuhk/CUHK_UPTOWN_0.jpg" alt="从这个角度来看,CU的建筑还挺有工业风的"></p><h3 id="08-2022"><a href="#08-2022" class="headerlink" title="08.2022"></a>08.2022</h3><p>这张应该是快离港时,本人厮混在CU最便宜的众志堂吃完饭后拍的。当时因为没能中签,抢不到金巴且VISA快过期而郁闷,没想到拍出来的风景却格外宁静。<br><img src="/2022/09/19/memory-hk-cuhk/wx_camera_1659348315471-01.jpeg" alt="众志堂往地铁口方向走的楼梯所拍"></p>]]></content>
<categories>
<category> Clutter </category>
</categories>
</entry>
<entry>
<title>Curriculum Vitae</title>
<link href="/2022/09/19/curriculumvitae/"/>
<url>/2022/09/19/curriculumvitae/</url>
<content type="html"><![CDATA[<h2 id="Bio"><a href="#Bio" class="headerlink" title="Bio"></a>Bio</h2><p>Having completed my undergraduate studies at <a href="https://www.shu.edu.cn/">SHU</a>, I commenced my career as an Embedded Software Engineer at <a href="https://www.jabil.com/">JABIL</a>, where I dedicated two years to the development of software solutions for IoT and 4G/5G programs. My responsibilities at JABIL ranged from designing and implementing software features to debugging and optimizing existing systems, all within the complex landscape of IoT and communication equipment development. Eager to delve deeper into my interest in AIoT, I left my position at JABIL in August 2021 to embark on a master’s degree at <a href="https://www.cuhk.edu.hk/english/index.html">CUHK</a>. My research during this period was primarily centered around the intersection of AI, IoT, and other advanced topics in technology and management. In addition to my work on AIoT, I have cultivated a strong interest in ML and DL algorithms. I have also applied parts of algorithms in the realm of computer vision, specifically in image processing and video analysis, further solidifying my understanding of the real-world applications of AI. I continue to explore innovative ways of leveraging these algorithms to solve complex problems in the fields of IoT and mobile sensing <span class="github-emoji"><span>😜</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f61c.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>.</p><!-- I graduated from [SHU](https://www.shu.edu.cn/) and have worked at [JABIL](https://www.jabil.com/) as an Embedded SW Engineer for 2 years, responsible for the software development of IoT and 4G/5G programs. I left the job to enrol at [CUHK](https://www.cuhk.edu.hk/english/index.html) on August 2021. My work experience and master's research cover a range of areas: _AIoT, Embedded Systems, and Federated Learning_. Besides, I am interested in multiple approaches to ML & DL (SVM, CNN, etc.) and their applications in computer vision (image processing, video analysis, etc.). --><h2 id="Education"><a href="#Education" class="headerlink" title="Education"></a>Education</h2><h3 id="Rochester-Institute-of-Technology-Rochester"><a href="#Rochester-Institute-of-Technology-Rochester" class="headerlink" title="Rochester Institute of Technology, Rochester"></a>Rochester Institute of Technology, Rochester</h3><p><em>Jan 2024 - Now</em> Research Assistant in Computing and Information Sciences. GPA: 4.00/4.00.</p><!-- Academic advisor: [Prof. Haibo Yang](https://www.rit.edu/computing/directory/hbycis-haibo-yang) --><h3 id="Temple-University-Philadelphia"><a href="#Temple-University-Philadelphia" class="headerlink" title="Temple University, Philadelphia"></a>Temple University, Philadelphia</h3><p><em>Jan 2023 - Dec 2023</em> Teaching Assistant in Computer and Information Science. GPA: 3.89/4.00.<br>Teaching class: CIS 3515 (Introduction to Mobile Application Development).</p><h3 id="The-Chinese-University-of-Hong-Kong-Hong-Kong"><a href="#The-Chinese-University-of-Hong-Kong-Hong-Kong" class="headerlink" title="The Chinese University of Hong Kong, Hong Kong"></a>The Chinese University of Hong Kong, Hong Kong</h3><p><em>Aug 2021 - Nov 2022</em> Master of Science in Electronic Engineering. GPA: 3.275 (<strong>MERIT</strong>), the maximum GPA attainable is 4.000.<br>Academic advisor: <a href="https://www.ee.cuhk.edu.hk/en-gb/people/academic-staff/professors/prof-ren-hongliang">Prof. Hongliang Ren</a></p><h3 id="Shanghai-University-Shanghai"><a href="#Shanghai-University-Shanghai" class="headerlink" title="Shanghai University, Shanghai"></a>Shanghai University, Shanghai</h3><p><em>Sep 2015 - Jul 2019</em> Bachelor of Engineering in Electrical Engineering & Automation. GPA: 3.14/4.00 (83.3/100), rank: 31.4%.<br>Academic advisor: <a href="https://automation.shu.edu.cn/info/1067/1862.htm">Prof. Zhiyuan Gao</a></p><h2 id="Honors-amp-Certificates"><a href="#Honors-amp-Certificates" class="headerlink" title="Honors & Certificates"></a>Honors & Certificates</h2><ul><li><em>Fall 2016</em> National Encouragement Scholarship & Self-improvement Scholarship of Shanghai University</li><li><em>Fall 2017</em> National Encouragement Scholarship of Shanghai University</li><li><em>Spring 2018</em> <a href="http://robocup.drct-caa.org.cn/index.php/race/view?id=519">First Prize</a> in the Service Robot Special Competition of 2018 China Robot Competition</li><li><em>Summer 2018</em> <a href="https://www.nuedc-training.com.cn/index/news/details/new_id/68">Second Prize</a> in the TI Cup Undergraduate Shanghai Electronics Design Contest</li><li><em>12/2020</em> <a href="https://www.icourse163.org/cert/downChargeCert.htm?termId=1461777464#/">Course Certificate</a> <em>(OUTSTANDING)</em> of Python Language Foundation and Application of PKU</li><li><em>01/2021</em> <a href="https://www.coursera.org/account/accomplishments/specialization/certificate/8ZMR9ULZ8D43">Certificate</a> of Deep Learning Specialization (all 5 courses) of DeepLearning.AI in COURSERA</li><li><em>01/2021</em> <a href="https://www.coursera.org/account/accomplishments/certificate/LPXQ53K44TXT">Course Certificate</a> of Machine Learning of Stanford in COURSERA</li><li><em>06/2021</em> <a href="https://www.coursera.org/account/accomplishments/specialization/certificate/XNXEEFVMYFZ4">Certificate</a> of Python for Everybody Specialization (all 5 courses) of UMich in COURSERA</li><li><em>09/2022</em> <a href="https://www.coursera.org/account/accomplishments/specialization/certificate/7KTWW4ETEWPS">Certificate</a> of Google Data Analytics Specialization (all 8 courses) in COURSERA</li><li><em>11/2022</em> <a href="http://www.ee.cuhk.edu.hk/en-gb/curriculum/msc-programme/scholarships">M.Sc. Certificate of Merit</a> of CUHK Graduation Scholarships</li></ul><h2 id="Skills"><a href="#Skills" class="headerlink" title="Skills"></a>Skills</h2><ol><li>Programming Skills: C/C++ (<a href="https://ncre.neea.edu.cn/html1/folder/1507/909-1.htm">NCRE C Programming Level II</a>, <em>good</em>), Matlab, LaTex, Python, Linux, Git, Markdown, etc.</li><li>English Proficiency: IELTS Academic overall 6.5; Duolingo overall 125.</li><li>Machine Learning: have a certain understanding of image processing (segmentation, classification, etc.), video analysis (object recogintion, detection, etc.).</li></ol><h2 id="Projects-amp-Experiences"><a href="#Projects-amp-Experiences" class="headerlink" title="Projects & Experiences"></a>Projects & Experiences</h2><h3 id="The-NICT-2021-Embedded-Dev-amp-AI-Summer-School-on-Jul-2021"><a href="#The-NICT-2021-Embedded-Dev-amp-AI-Summer-School-on-Jul-2021" class="headerlink" title="The NICT 2021 Embedded Dev & AI Summer School on Jul 2021"></a>The NICT 2021 Embedded Dev & AI Summer School on Jul 2021</h3><p><strong>Keywords:</strong> <em>Classification, TensorFlow, ART-Pi, RT-Thread.</em></p><ol><li>Based on garbage datasets online, applied TensorFlow to get and expand images’ feathers, set the parameters such as mode, batch size, and then created sequential for training. Checked the model’s accuracy by matplotlib, then saved the model as a h5 file (tflite is also suitable).</li><li>Took <a href="https://github.com/RT-Thread/RT-AK">AI-Tool</a> to load the file and related configuration to <a href="https://art-pi.gitee.io/website">ART-Pi</a>, and then designed the driver codes under <a href="https://github.com/RT-Thread/rt-thread">RT-Thread</a>. After initialising the screen, camera, and so on, implemented the bilinear interpolation to convert captured images to three-channel data according to the model’s input. And relying on the predicted, there would be corresponding reactions on the ART-Pi.</li><li>Please refer to <a href="https://github.com/MarcuXu/Garbage-Classification-Device">github.com/MarcuXu/Garbage-Classification-Device</a> for more details <span class="github-emoji"><span>😘</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f618.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>.</li></ol><h3 id="Design-Engineer-Intern-amp-Embedded-Software-at-Jabil-Circuit-Shanghai-Co-Ltd-from-Mar-2019-to-Jun-2021"><a href="#Design-Engineer-Intern-amp-Embedded-Software-at-Jabil-Circuit-Shanghai-Co-Ltd-from-Mar-2019-to-Jun-2021" class="headerlink" title="Design Engineer (Intern & Embedded Software) at Jabil Circuit (Shanghai) Co., Ltd from Mar 2019 to Jun 2021"></a>Design Engineer (Intern & Embedded Software) at Jabil Circuit (Shanghai) Co., Ltd from Mar 2019 to Jun 2021</h3><p><strong>Keywords:</strong> <em>MCU, Circuit schematics, Bus communication protocols, Vivado, RRU, Driver design, Teamwork.</em></p><ol><li>Responsible for estimation and application of MCU used in projects; assisted hardware engineers in testing temperature-controlled chips with Arduino R3, such as LMP92066.</li><li>Improved understanding of circuit schematics and using laboratory instruments; further gained to understand BSP and hardware layer of the MCU’s bus protocol such as IIC, SPI, DMA, UART, etc.</li><li>Gained the NMEA format and how to decode it in C; implemented the various commercial applications of RT-Thread; acquired to use HC-02 BT module, L80 GPS module, etc.</li><li>During design space exploration, developed transforming wdb files to vcd in Vivado by Python to process wave data to get its transition moment and value to analyze data per clock edge.</li><li>Completed the driver design of hardware chips on RRU, such as driver codes for CAT24M01, LM5064 and different instructions codes on hardware abstraction layer and other layers.</li><li>Gained to test Xilinx’s suite’s Processing System & Programming Logic with Vivado; acquired how to use XSCT and write TCL scripts to load the bootloader and other settings.</li><li>Acquired how to write JSON files, serialize and deserialize them with Python; acquired how to use Git and Azure DevOps in teamwork.</li></ol><h3 id="The-TI-Cup-Undergraduate-Shanghai-Electronics-Design-Contest-on-Jul-2018"><a href="#The-TI-Cup-Undergraduate-Shanghai-Electronics-Design-Contest-on-Jul-2018" class="headerlink" title="The TI Cup Undergraduate Shanghai Electronics Design Contest on Jul 2018"></a>The TI Cup Undergraduate Shanghai Electronics Design Contest on Jul 2018</h3><p><strong>Keywords:</strong> <em>Loop Current Signal Detection Device, STM32F1, RTOS, Driver design.</em></p><ol><li>Led the team to design the Loop Current Signal Detection Device, which took STM32F1.</li><li>Assisted the selection of MCU and hardware components; responsible for applying RT-Thread to the MCU, and the driver design of interaction functions including the keypad, LCD and touchscreen, etc.</li><li>Responsible for the report writing, on-site installation and demonstration of the competition work, answered the questions about system design from the judges.</li></ol><h3 id="The-Service-Robot-Special-Competition-of-2018-China-Robot-Competition-on-May-2018"><a href="#The-Service-Robot-Special-Competition-of-2018-China-Robot-Competition-on-May-2018" class="headerlink" title="The Service Robot Special Competition of 2018 China Robot Competition on May 2018"></a>The Service Robot Special Competition of 2018 China Robot Competition on May 2018</h3><p><strong>Keywords:</strong> <em>OpenMV, WeChat mini program, Auto-tracking, Bluetooth.</em></p><ol><li>Led the team, helped to design a WeChat mini program to control the smart car. Based on MSP432, applied Bluetooth synchronization (latency < 0.1s) and MQTT (latency < 0.3s) to control the car and receive its real-time feedback, and realized auto-tracking by OpenMV.</li><li>Analyzed the competition topic with teammates, learned and selected modules such as camera, motors, etc.; developed the communication protocol with the host unit and assisted in debugging it.</li><li>Responsible for the software design of MCU and took FreeRTOS as a framework to drive sensors.</li></ol><h2 id="Theses-amp-Publications"><a href="#Theses-amp-Publications" class="headerlink" title="Theses & Publications"></a>Theses & Publications</h2><ul><li><strong>Mingjing Xu</strong>, master’s thesis, “Modeling and vision-assisted optimization of sampling strategies for lesion detection”.</li><li><strong>Mingjing Xu</strong>, bachelor’s thesis, “Simulation and analysis of unifalsified PID algorithm for vibration control of a smart flexible beam”.</li><li>Li, C., <strong>Xu, M.</strong>, Du, Y., Liu, L., Shi, C., Wang, Y., Liu, H., & Chen, Y., “Practical Adversarial Attack on WiFi Sensing Through Unnoticeable Communication Packet Perturbation,” in <em>Proceedings of the 30th Annual International Conference on Mobile Computing and Networking</em>, 2024, pp. 373-387. (<em>CCF-A</em>, <em>CORE-A*</em>)</li><li>Yuan, S., Liang, B., Wong, P. W., <strong>Xu, M.</strong>, Li, C. H., Li, Z., & Ren, H., “Magnetic-Guided Flexible Origami Robot toward Long-Term Phototherapy of <em>H. pylori</em> in the Stomach,” in <em>2024 IEEE International Conference on Robotics and Automation (ICRA)</em>, 2024, pp. 9851-9857. (<em>CCF-B</em>, <em>CORE-A*</em>)</li></ul><h2 id="Interests"><a href="#Interests" class="headerlink" title="Interests"></a>Interests</h2><p>I often do sports training after school, like table tennis and badminton. I am also a big fan of Lionel Messi and FC Barcelona, so I usually spend weekends losing weight and meeting new people by attending football matches. I like to enjoy the natural scenery. My hometown has a piece of <a href="https://en.wikipedia.org/wiki/World_Heritage_Site">World Natural Heritage</a> scenic spot, <a href="https://en.wikipedia.org/wiki/Mount_Langshan">Mount Langshan</a>. During my undergraduate and master’s vacations, I would ask my family and friends to go hiking there. Meanwhile, I have a passion for mobile games. I prefer to play as an <em>Attack Damage Carry/Core</em> (ADC, NOT the <em>Analog to Digital Converter</em> here <span class="github-emoji"><span>😅</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f605.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span>) in the <a href="https://wildrift.leagueoflegends.com/en-us/">LoL Mobile</a> (Wild Rift) and stay between Master and Grandmaster in <a href="https://www.esports.net/wiki/guides/wild-rift-ranking-system/">current ranks</a>. Some match highlights are posted on my social media, and I’ve met many nice friends abroad through the game.<br><img src="https://s2.loli.net/2022/11/05/bCVXTdAFRGmcgp9.jpg" alt="This is a photo taken at the river around my home"><br><img src="https://s2.loli.net/2022/11/05/h73P8IEm6glQ9V4.jpg" alt="I love the evening sunset, which always has a pure and brilliant beauty in my hometown"><br><img src="https://s2.loli.net/2022/11/05/zFTS5GiUakq4C9M.jpg" alt="This is a screenshot of my performance in a LOL Mobile match"></p>]]></content>
<categories>
<category> Clutter </category>
</categories>
<tags>
<tag> Academic </tag>
</tags>
</entry>
<entry>
<title>How to build your own website</title>
<link href="/2022/09/19/building-blog/"/>
<url>/2022/09/19/building-blog/</url>
<content type="html"><![CDATA[<h2 id="Useful-links"><a href="#Useful-links" class="headerlink" title="Useful links"></a>Useful links</h2><ol><li>HEXO: 安装所需库可以看<a href="https://reclusew.github.io/2021/08/12/blog-setup/#toc-heading-14">博客搭建过程采用hexo框架+部署到github</a> + <a href="https://github.com/blinkfox/hexo-theme-matery/blob/develop/README_CN.md">blinkfox/hexo-theme-matery</a><br><a href="https://wushishu.xyz/post/be8880ea.html">Hexo+github搭建个人博客</a> + <a href="https://www.bilibili.com/video/BV1NY4y1C7Ng/?spm_id_from=333.788.recommend_more_video.10&vd_source=57cec20aa45aa135ba9fdbb99ed82151">video guide</a>。</li><li><a href="https://www.bilibili.com/video/BV1Gz4y1f7Qj/?spm_id_from=333.788.recommend_more_video.11&vd_source=57cec20aa45aa135ba9fdbb99ed82151">最简单的办法: HUGO NETLIFY</a>;如果需要添加更多的功能可以看<a href="https://github.com/godweiyang/hexo-theme-sungod">这里</a>。</li><li>如果想贴图片,可以参考这个<a href="https://zhuanlan.zhihu.com/p/265077468">知乎回答</a>。由于不用Typora,因此使用的是第二个方法,即使用<code>![](image.jpg)</code>进行图片插入(缺点是会占用repo的存储且因为wall加载慢)。</li><li>此个人网站的原网址为 <em>MarcuXu.github.io</em> ,但GitHub page也是可以绑定个人购买的域名。例如,新人在<a href="https://cloud.tencent.com/">腾讯云</a>购买域名是比较划算的。购买域名后,新人可以直接按照腾讯云的guidelines安装SSL证书以便于解析。如果你使用的是基于HEXO的GitHub page,那么你可以参考<a href="https://cloud.tencent.com/developer/article/2142661">GitHub Pages个性化域名配置</a>和<a href="https://www.jianshu.com/p/d92ea8542673">github pages 绑定阿里云域名</a>来进行后续的配置。</li></ol><h2 id="Bugs"><a href="#Bugs" class="headerlink" title="Bugs"></a>Bugs</h2><ol><li><a href="https://www.cnblogs.com/loong1314/p/16352878.html">IdealTree卡住</a><ul><li>npm config set registry <a href="https://registry.npmmirror.com/">https://registry.npmmirror.com/</a></li></ul></li><li><a href="https://blog.csdn.net/dajian790626/article/details/78595684">用户名不一样导致的404</a></li><li><a href="https://blog.csdn.net/qq_43768946/article/details/90411154">Git使用出现[email protected]: Permission denied (publickey)</a>,得先设置好全局git config才可以用keygen<ul><li>git config –global user.name “MXU”</li><li><del>git config –global user.email “<a href="mailto:[email protected]">[email protected]</a>”</del></li><li><del>ssh-keygen -t rsa -C “<a href="mailto:[email protected]">[email protected]</a>“</del></li><li>ssh -T <a href="mailto:[email protected]">[email protected]</a></li></ul></li><li>该网站使用的域名是在腾讯云上购买托管的,在申请SSL免费证书时会因为Github提供的CNAME记录值”username.github.io”中包含CAA记录,且改该域名CAA记录中不包含Sectigo根证书(TrustAsia签发的根证书)的授权,因此将导致腾讯云免费证书无法签发。具体解决措施可以参看<a href="https://r2wind.cn/articles/20221006.html">这里</a></li></ol><h2 id="Cmd"><a href="#Cmd" class="headerlink" title="Cmd"></a>Cmd</h2><ul><li>hexo clean / hexo cl (清理掉上次生成的缓存,每次重新生成时最好第一个执行)</li><li>hexo g (在clean后,用来generate新的配置)</li><li>hexo s (在执行generate后,用来在local预览)</li><li>hexo d (将配置push到repo中)</li><li>hexo new <em>file name</em></li><li>hexo cl && hexo g && hexo s (一键生成新的配置后在local打开)</li><li>hexo cl && hexo g && hexo d (一键生成新的配置后push到repo)</li></ul><h2 id="Notes"><a href="#Notes" class="headerlink" title="Notes"></a>Notes</h2><ol><li>md内的标题最好从”##”开始,才会有目录。</li><li>如果使用vscode开发,可以直接在 <strong>终端</strong> 执行命令而不需要在文件夹下 <code>git bash</code>。但是在vscode中,注意关闭自动注释插件,否则会与主题style产生冲突。</li><li>更改字体的颜色,格式等可以参考<a href="https://blog.csdn.net/qq_43732429/article/details/108034518">这里</a>。</li><li>已安装表情插件,md使用表情包请参考<a href="https://gist.github.com/rxaviers/7360908">这里</a><span class="github-emoji"><span>😏</span><img src="https://github.githubassets.com/images/icons/emoji/unicode/1f60f.png?v8" aria-hidden="true" onerror="this.parent.classList.add('github-emoji-fallback')"></span></li><li>在头部标明 <strong>categories: xxx</strong> 后 <em>categories</em> 才有作用。</li><li>若是插入GIF可以参考<a href="https://www.cnblogs.com/AhuntSun-blog/p/12028808.html">这里</a>,实际上可以将一些非敏感的图片上传到 <a href="https://giphy.com/">https://giphy.com/</a> 后进行图床引用,格式类似 <code>![]()</code>。本网站之后主要使用<a href="https://sm.ms/">线上图床</a>来附上图片(使用图床有多个优点,例如图片加载快,不需在本地和GitHub占用存储空间,所以非私密的图片完全可以upload)。</li><li>注意upload到GitHub上的并非所有的文件,GitHub pages只需要 <strong>public</strong> 即可。其实这里可以稍微理解一下部署到github的原理。之前步骤中在Github上创建的那个特别的repo(MarcuXu.github.io)一个最大的特点就是其master中的html静态文件,可以通过<a href="http://marcuxu.github.io/">http://MarcuXu.github.io</a>来直接访问。<code>Hexo -g</code>会生成一个静态网站(第一次会生成一个public目录),它就是我们点开网站看到的东西。而当我们将hexo生成的静态网站<code>git commit</code>后,我们就可以在线上看到我们网站的内容了。所以明白了原理,怎么做自然就清晰了。</li><li>关于在md文件中公式的话,可以将论文中的latex公式直接复制后左右各加 <strong>$</strong> ,而更多的md文件中编辑公式可以看<a href="https://blog.csdn.net/CaptainD_W/article/details/116570636">这里</a>。</li></ol><h3 id="Insert-images-as-HTML-does"><a href="#Insert-images-as-HTML-does" class="headerlink" title="Insert images as HTML does"></a>Insert images as HTML does</h3><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token comment"><!--2 images are inserted in same line--></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">align</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>center<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>ImagePath<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>30%<span class="token punctuation">"</span></span> <span class="token attr-name">height</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>30%<span class="token punctuation">"</span></span> <span class="token attr-name">align</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>bottom<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>ImagePath<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>30%<span class="token punctuation">"</span></span> <span class="token attr-name">height</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>30%<span class="token punctuation">"</span></span> <span class="token attr-name">align</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>bottom<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token comment"><!--img src="file:///D:/photo/二次元/10.jpg" width="1000" height="500" /--></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token comment"><!--换行--></span> The left is our page, and the right is the example page <span class="token comment"><!--标题--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>center</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</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></span></span></code></pre>]]></content>
<categories>
<category> Tech </category>
</categories>
<tags>
<tag> SW_Tricks </tag>
</tags>
</entry>
<entry>
<title>Hello world</title>
<link href="/2022/09/18/hello-world/"/>
<url>/2022/09/18/hello-world/</url>
<content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><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>More info: <a href="https://hexo.io/docs/writing.html">Writing</a></p><h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo server<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://hexo.io/docs/server.html">Server</a></p><h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo generate<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://hexo.io/docs/generating.html">Generating</a></p><h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">hexo deploy<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>More info: <a href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>]]></content>
<categories>
<category> Clutter </category>
</categories>
</entry>
</search>