Posted on

訓練模型-model.fit()的參數設定

model.fit的參數

請見官網介紹: https://www.tensorflow.org/api_docs/python/tf/keras/Model#fit

fit(
    x=None,
    y=None,
    batch_size=None,
    epochs=1,
    verbose='auto',
    callbacks=None,
    validation_split=0.0,
    validation_data=None,
    shuffle=True,
    class_weight=None,
    sample_weight=None,
    initial_epoch=0,
    steps_per_epoch=None,
    validation_steps=None,
    validation_batch_size=None,
    validation_freq=1,
    max_queue_size=10,
    workers=1,
    use_multiprocessing=False
)

通常label單類別最後使用softmax當作activation,多類別用sigmoid。在使用model.fit之前可用下列指令來查看模型的資訊:

model.summary()

Batch size

Batch size是在訓練神經網絡時,一次輸入給模型的訓練樣本數量。批量大小可以影響訓練的速度和效果,決定了模型在訓練過程中每次更新權重時使用的樣本數量。

在訓練神經網絡時,每一次將一個批次的訓練數據輸入模型並根據輸出調整模型參數的過程稱為一次迭代。

批量大小可以影響訓練的速度和效果。通常而言,批量大小越大,訓練速度越快,但是需要更多的內存。相反,批量大小越小,訓練速度越慢,但是需要的內存較少。

另外,批量大小也有助於控制梯度爆炸和消失的問題。如果批量大小太小,梯度可能會非常波動,導致訓練不穩定。如果批量大小太大,梯度可能會非常小,導致模型學習速度變慢。

因此,批量大小是一個需要平衡的超參數。通常,人們會根據自己的硬件配置和訓練目標來調整批量大小。

甚麼是更新權重

在神經網絡中,權重是用於計算網絡輸出的參數。每個神經元都有自己的權重,這些權重决定了該神經元對輸出的貢獻。

在訓練神經網絡時,權重是通過反向傳播算法來學習和調整的。在每次訓練迭代中,網絡將會根據輸入和預期輸出計算損失,然後使用反向傳播算法來調整權重,使得損失最小化。

在神經網絡中,權重是一種超參數,這意味著它們是由人為設定的,並不是通過訓練來學習的。超參數包括學習率、批量大小、正則化強度等,它們都對模型的訓練和性能有重要影響。

Epoch

Epoch是指訓練過程中對整個訓練數據集進行一次完整的訓練循環。例如,假設你有1000個樣本的訓練數據集,批量大小為100,那麼你需要10次迭代才能完成一個 epoch。

在訓練神經網絡時,你可能會進行多個 epoch,以提高模型的精度。在每個 epoch 中,模型將會看到所有的訓練數據,並根據輸出調整模型參數。在許多情況下,經過足夠多的 epoch 後,模型的精度將會趨於穩定,並停止進一步提高。