【筆記】TensorFlow 機器學習

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)
發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *