一、權(quán)重文件的格式
權(quán)重文件是指訓(xùn)練好的模型參數(shù)文件,不同的深度學(xué)習(xí)框架和模型可能使用不同的權(quán)重文件格式。以下是一些常見的權(quán)重文件格式:
PyTorch
的模型格式:.pt
文件。Darknet
的模型格式:.weight
文件。TensorFlow
的模型格式:.ckpt
文件。
一、參考文章或視頻鏈接 |
---|
[1] Navigating Model Weight File Formats: .safetensors, .bin, .pt, HDF5, and Beyond |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、保存權(quán)重文件
沒有人想讓自己的辛苦白費,計算好的權(quán)重文件就應(yīng)該保存下來,不僅方便自己,也方便他人。文章來源:http://www.zghlxwxcb.cn/news/detail-804514.html
# Define model
class TheModelClass(nn.Module):
def __init__(self):
super(TheModelClass, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
# Initialize model
model = TheModelClass()
# Initialize optimizer
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
# Print model's state_dict
print("Model's state_dict:")
for param_tensor in model.state_dict():
print(param_tensor, "\t", model.state_dict()[param_tensor].size())
# Print optimizer's state_dict
print("Optimizer's state_dict:")
for var_name in optimizer.state_dict():
print(var_name, "\t", optimizer.state_dict()[var_name])
# 保存權(quán)重的方法torch.save
torch.save(model.state_dict(), PATH)
二、參考文章或視頻鏈接 |
---|
[1] SAVING AND LOADING MODELS - Pytorch |
[2] MODELS AND PRE-TRAINED WEIGHTS - Pytorch |
[3] Introducing TorchVision’s New Multi-Weight Support API - Pytorch |
[4] PyTorch Model Eval + Examples |
三、加載權(quán)重文件
3.1 nn.module.eval()方法
在 PyTorch 中,nn.Module是一個非常重要的類,用于實現(xiàn)各種神經(jīng)網(wǎng)絡(luò)層和模型。在使用 nn.Module進行訓(xùn)練和推理時,有時需要將模型設(shè)置為評估模式,這可以通過調(diào)用eval()方法實現(xiàn)。在評估模式下,PyTorch 中的某些層和操作會發(fā)生一些變化,例如 Dropout 和 BatchNormalization 層會被禁用,因為它們在訓(xùn)練和推理時的行為是不同的。此外,在eval()下,模型不會進行梯度計算(這也是預(yù)訓(xùn)練的意義所在),這可以提高推理速度并減少內(nèi)存使用。
使用eval()方法將模型設(shè)置為評估模式非常簡單,只需要在模型實例上調(diào)用該方法即可,調(diào)用eval()后,既然不會進行梯度計算,那自然也不會更新權(quán)重了,要不然加載好了一個預(yù)訓(xùn)練好的權(quán)重模型,又被調(diào)整了那不是哭死。文章來源地址http://www.zghlxwxcb.cn/news/detail-804514.html
3.1 參考文章或視頻鏈接 |
---|
[1] 《model.eval 至關(guān)重要?。。?!model.eval()是否開啟 BN 和 Dropout 的不同》 - CSDN |
[2] What’s the meaning of function eval() in torch.nn module - stackoverflow self.training=False
|
到了這里,關(guān)于深度學(xué)習(xí)技術(shù)棧 —— Pytorch中保存與加載權(quán)重文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!