> 深度學習 Keras
https://www.tensorflow.org/tutorials/keras/classification#import_the_fashion_mnist_dataset
* load_date():將圖片和其標籤分別讀取出來
```
fashion_mnist = tf.keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
```
* plt.imshow():進行圖像繪製
```
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()
```
⚠️ 灰階影像的值是0~255,可以選擇全數除以255.0來等比例縮小
* 神經網路模型常用的層 / 函式
| 種類 | 作用 |
| ---------- | ---------------------- |
| Sequential | 代表前面的往後面的承接 |
| Flatten | 將輸入的東西攤平成一維 (28*28=784) |
Dense | 又稱全連接層,也就是像握手一樣,上一層的每個神經元和這層的神經元的每一個組合都有連接到|
| activation|激勵函式(activation function),簡單來說,就是一個讓整個神經連接呈現不是線性的狀態。因為若是一個模型可以用很簡單的公式或者線性可表達的函數算出來,深度學習並沒有比較具備優勢。|
* compile的參數及其作用
| 條件 | 作用 |
| ---- | ---- |
| Loss function(損失函數) |用來評估說模型現在給出的答案和正確答案的差距的函式,這個可以有很多種類,這裡用的是用來衡量分類的SparseCategoricalentropy |
|Optimizer(優化器)|我們在修正時,不會直接將Loss給出來的差直接處理掉,而是會有一個評估要往哪個方向修正多少的方法做為基準。(因為這個點完全相等並不能代表另一個會表現好)除了adam以外,sgd, adagrad等都是常見的優化器|
|Metrics(指標)|在訓練的過程中我們會想看的中途狀況,accuracy是計算每次有正確被分類的圖片的比例|
* model.fit指令,意思是這個模型要盡力去符合實際的正確標準。
epochs是代表以前面60000張圖片做為一整組的話,想要讓同一個組讓機器訓練過幾次
```
model.fit(train_images, train_labels, epochs=10)
```
⚠️ 最終使用test的圖片來檢驗的動作稱之為evaluate(評定/評估)
```
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)
```
* softmax層能將一群輸入的值,按照一個分配方式壓縮,最終所有值都在0~1之間,且加總起來會剛好等於1
* 從輸入圖片到輸出結果的這個過程稱為推論(inference)
* 取機率最高的當作是判斷它是哪一種類型,使用np.argmax
```
np.argmax(predictions[0])
```
> PyInstaller
* 常用參數
| 參數 | 作用|
| -------- | -------- |
|-h, - -help|顯示help提示說明各參數用法|
|-F, - -onefile|打包成單一一個執行檔|
|-D, - -onefir|打包成一個資料夾,內含一個執行檔|
|-y, - -noconfirm|直接取代原先資料夾,無須經過同意|
|- -clean|清空前面打包時產生的暫存檔案|
|-n NAME, - -name NAME|將NAME作為app名字並命名到執行檔(預設會是主程式原先的主檔名)|
|- -add-date<SRC;DEST or SRC:DEST>|將非二進位檔案加到打包中,SRC對應原先的檔案,DEST對應打包後放的相對資料夾位置|
|-p DIR, - -paths DIR|如果有額外需要import的函式庫時,告訴pyinstaller可以去DIR這個位置搜尋|
|- -key KEY|用key來加密Python的bytecode|
|-w, - -windowed, - -noconsole|用Windows執行時隱藏命令提示字元的視窗|