import tensorflow as tf建立模型
Sequential:序列模型,由一系列層按照順序堆疊而成。
Dense:全連接層。
激活函數 (Activation):將輸入信號轉換為輸出信號。
ReLU:將所有負數設為 0,對於正值則保持不變。
Softmax:轉換為介於 0 和 1 之間的機率值,且總和為 1。
Sigmoid:適用於二元分類問題,輸出值介於 0 到 1 之間。
卷積神經網路 (CNN):透過 filter 提取特徵、max pooling 降低尺寸,進行圖像識別。
model = tf.keras.Sequential([
tf.keras.layers.Dense(units=1, input_shape=[1]),
# 1個神經元,1個輸入值
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
# 32 個 3x3 的 filter
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
# 將圖像展平成一維數組
tf.keras.layers.Dense(128, activation=tf.nn.relu),
# 隱藏層,128個神經元,使用 ReLU 激活函數
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
# 10個神經元,使用 softmax 激活函數
tf.keras.layers.Dense(1, activation='sigmoid')
# 二元分類問題,使用 sigmoid 激活函數
])編譯模型
優化器 (Optimizer):調整模型的參數,以尋找損失函數的最小值。
隨機梯度下降 (sgd):隨機選取每個批次的數據,計算梯度並更新參數。
Adam、RMSprop:自動調整學習率。
損失函數 (Loss):衡量模型預測值與實際值的損失程度。
均方誤差 (mean_squared_error):sum((預測值 – 實際值)^2)/n。
稀疏分類交叉熵 (sparse_categorical_crossentropy):用於多類別分類問題,整數形式的標籤。
二元交叉熵 (binary_crossentropy):用於二元分類問題。
評估指標 (Metrics):accuracy (準確率)。
model.compile(optimizer='sgd', loss='mean_squared_error')
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.compile(optimizer=RMSprop(learning_rate=0.001),
loss='binary_crossentropy',
metrics=['accuracy'])訓練模型
epochs:遍歷整個訓練數據的次數,每次進行一次前向傳播和反向傳播。
model.fit(x, y, epochs=500)回調函數 (callbacks):準確率達到指定閾值時自動停止訓練。
class myCallback(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
if(logs.get('accuracy') >= 0.6):
self.model.stop_training = True
model.fit(x, y, epochs=5, callbacks=[myCallback()])評估模型
model.evaluate(test_images, test_labels)
model.predict([10])
model.predict(test_images)