### 利用 Docker 建置環境
```bash
sudo docker run --rm -ti tensorflow/tensorflow bash
# 安裝需要的軟體
pip install keras tensorflow numpy gym
```
以下是一個使用 Keras 和 TensorFlow 後端的簡單範例,展示如何建立一個簡單的多層感知器(MLP)模型來分類 MNIST 手寫數字資料集:
```py
import numpy as np
from keras.datasets import mnist
from tensorflow.keras import layers, models, utils, datasets
# 載入 MNIST 手寫數字資料集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 資料預處理
# 將圖像展平成一維陣列 (784 個特徵),並將像素值正規化至 0 到 1 之間
x_train = x_train.reshape(x_train.shape[0], 28 * 28).astype('float32') / 255
x_test = x_test.reshape(x_test.shape[0], 28 * 28).astype('float32') / 255
# 將類別標籤進行 One-Hot 編碼
y_train = utils.to_categorical(y_train, 10)
y_test = utils.to_categorical(y_test, 10)
# 嘗試讀取已存在的模型,如果不存在,則創建一個新的模型
try:
model = models.load_model('mnist_mlp_model.keras')
print("已讀取現有模型")
except IOError:
# 建立 MLP 模型
model = models.Sequential()
model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
model.add(layers.Dense(10, activation='softmax'))
# 編譯模型 optimizer: adam or rmsprop
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
print("已建立新模型")
# 訓練模型
model.fit(x_train, y_train, validation_split=0.2, epochs=10, batch_size=128, verbose=1)
# 評估模型
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', loss)
print('Test accuracy:', accuracy)
# 儲存模型
model.save('mnist_mlp_model.keras')
```