PaddlePaddle提供了許多預訓練模型,用戶可以使用這些模型來進行遷移學習或者在自己的數據集上進行微調。下面是一個使用預訓練模型的簡單示例:
import paddle
from paddle.vision.models import resnet50
# 加載預訓練模型
model = resnet50(pretrained=True)
# 加載自定義數據集
# 在這里假設我們已經加載了自己的數據集,并進行了預處理
# 定義優化器
optimizer = paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters())
# 定義損失函數
loss_fn = paddle.nn.CrossEntropyLoss()
# 訓練模型
for epoch in range(num_epochs):
for batch_data in train_loader:
x, y = batch_data
logits = model(x)
loss = loss_fn(logits, y)
loss.backward()
optimizer.step()
optimizer.clear_grad()
# 在驗證集上評估模型
model.eval()
with paddle.no_grad():
for batch_data in val_loader:
x, y = batch_data
logits = model(x)
val_loss = loss_fn(logits, y)
print('Epoch {}, Train Loss: {}, Val Loss: {}'.format(epoch, loss.numpy(), val_loss.numpy()))
# 保存模型
paddle.save(model.state_dict(), 'resnet50_model.pdparams')
在這個示例中,我們首先加載了一個預訓練的ResNet-50模型,并對其進行微調以適應我們自己的數據集。然后定義了優化器和損失函數,并使用訓練集進行模型訓練。最后,在驗證集上評估模型并保存訓練好的模型參數。在實際應用中,用戶可以根據自己的需求,選擇不同的預訓練模型和調整模型結構來實現更復雜的任務。