2019年5月21日 星期二

[語言]一個月新制多益935分!!!我如何準備

為了求職更順利
而且高三時考的多益證照(825分)其實也已經過期了
所以三月的時候決定去考新制多益

考慮到口試完之後會有另一波求職
因此我報考2019/04/28的場次

5/20懷著忐忑的心查成績
結果竟然出乎我預料


(人生的高峰所以請讓我炫耀一下><)

太開心的PO文之後滿多人跑來問我做了什麼準備
所以整理一下我讀了那些書用了什麼資源
讓想準備的人可以參考

1. 刷題
練習題目是最重要的一環
原因是要練習控制時間以及專注度
雖然練習時的時間掌控狀況跟實際考試上一定有落差(比如說練習時都可以剩10分鐘結果實戰時最後十分鐘還剩兩個題組)
不過如果你練習時都寫不完
就要嘗試找出是哪一個部分是弱項最拖時間

我使用的題本是這一本:

New TOEIC多益新制黃金團隊5回全真試題+詳解(附2MP3+防水書套)


我個人覺得他的單字難度與題目方向跟真的多益考試差不多
詳解本有附帶題目也是很棒的設計
PS: 阿滴有推薦這一本的樣子

因為覺得自己閱讀比較弱(考出來之後的確是閱讀比較弱)
我有另外刷閱讀的題目:


但是這一本的題目與單字就有點偏難
直接寫可能會造成自信心低落
時間不夠所以我也只有寫+檢討三回


2. 閱讀的準備
閱讀的部分我覺得我的弱項是一開始的文法與單字部分
所以我用這一本書補強文法:

不過我覺得這一本其實比較適合有多一點時間準備的人
因為他內容真的超多(而且超級重)
基本上我只有翻完他的文法部分而已

3. 聽力的準備(其實沒什麼準備)
聽力的部分我個人認為是無法速成
所以我也沒有特別練習
頂多有空檔的時候看TED(而且還選不是商業的影片哈哈)
考前一天突然想起成大有Eazy Test這個資源
所以就用它的多益訓練課程來練聽力
課程內容提供了滿紮實的考試技巧訓練
(如果我早一點拿出來用或許閱讀會更高分)

4. 單字
單字我也是有空就背
前半個月我用百詞斬(中國大陸的APP)
後半個月我有空就會翻

他的編排方式是單元式
每一單元約40個單字
單元後面會有分級的單字表
可以視自己的程度去選擇要背什麼單字

檢討的時候我也會把不會單字抄下來
好處是很多常出卻不會的單字會因此印象更深刻

5. 檢討
檢討也是很重要的一環
我會在檢討的時候把不會的單字片語或常用句子整理起來
容易搞錯或不會的文法也會再抄寫一遍或自己想例句


以上是我一個月準備新制多益的方法與資源
當然其實我覺得能考成這樣有一部分也是運氣不錯
畢竟我很幸運地坐在撥放器前面
聽力聽得超級清楚

還在徬徨如何準備的朋友可以參考看看
祝福大家都拿到金色證書

2019年5月17日 星期五

[筆記][tensorflow]Batch Normalization Layer用法(Key Variable not found in checkpoint)

最近在改寫3D Faster RCNN時遇到了一些使用上的問題 ,
因此稍微筆記一下。

首先介紹一下Batch Normalization~
Batch Normalization 最早是在2015年被提出,
主要是解決network在訓練過程中遇到的Covariate shift問題
透過正規化minibatch,加速網絡訓練及穩定性。

最常用來解釋Batch nomalization對於增加訓練網絡的穩定性的方式為下圖:


圖片中我們可以看到,
加入Batch normalization的每一層網絡輸出的分布比較常態,
沒有發生有效值被shift到兩個極端,
這對於使用tanh或sigmoid兩種activation function的網絡來說有很大的幫助,
因為這兩個函數最敏感(變化最大)的區域有一定的範圍,
輸入的分佈超過範圍就會有飽和的問題。


因此如果加入Batch normalization,
會讓訓練避免陷入飽和的狀態。

而ReLU雖然不會遇到飽和的問題,
但是使用Batch Normalization還是可以避免梯度爆炸與加速訓練。

目前我謹了解其物理意義,
對於Batch Normalization的數學模型與詳細細節有興趣的朋友也可以去找他的原始paper或是其他資源來看。
或是之後我有空看完也會來努力補上。

接下來是Batch Normalization的tensorflow用法,
我使用的tensorflow版本是1.12。

要將Batch Normalization layer加在convolution layer的activation function之前,
這邊我用的是tf.layers.batch_normalization,
beta值、gamma值、mean與variance等超參數都使用預設值,
這些值可以自己調整,
(另外如果用的是tf.nn.batch_normalization,
就要自己先定義存超參數的tensor。)

要正確的訓練記得將training這個argument設為true。

接下來就是我遇到問題的地方。
因為batch_normalization的參數不屬於trainable variables,
若沒有設定tf.train.Saver儲存global_variable,
儲存的model將不包含訓練好的batch_normalization layer,
inference的時候會出現找不到的錯誤:Key Variable not found in checkpoint
因此在宣告saver時要加入save global variable的設定 var_list=tf.global_variables()



就可以解決了~~


本篇主要是筆記一下
(1) batch normalization的物理意義
(2) tensorflow的寫法
(3) save batch normalization model時的注意事項

參考資料:





https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization

https://www.tensorflow.org/api_docs/python/tf/nn/batch_normalization