pytorch学习笔记

1.dataset

import os

dir_path = "文件路径"
data_path_list = os.listdir(dir_path)
data_path_list[0] #查看第一个文件名

# 第二种写法
root_dir = "大文件夹的路径"
label_dir = "大文件夹下面的一个小文件夹的路径"
path = os.path.join(root_dir,label_dir)

2.tensorboard

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

for i in range(100):
    writer.add_scalar("y = x", i, i)

writer.close()

这样就会在文件夹下面创建一个叫logs的文件夹,里面存放tensorboar生成的文件

tensorboard --logdir=logs --port=6007
#port默认是6006,logs和上面的SummaryWriter里的内容对应

3.optim

import torch
from torch.nn import L1Loss
import torch.optim
from torch import nn

loss = nn.CrossEntropyLoss()
model = Model()
optim = torch.optim.SGD(model.parameters(), lr=0.01)
for epoch in range(10):
    running_loss = 0.0
    for data in dataloader:
        imgs, targets = data
        outputs = model(imgs)
        result_loss = loss(outputs, targets)
        
        optim.zero_grad()
        result_loss.backward()
        optim.step()
        
        running_loss += result_loss
    print(running_loss)

4.修改现有模型结构

import torchvision

from torch import nn

vgg16_false = torchvision.models.vgg16(pretrained=False)
vgg16_true = torchvision.models.vgg16(pretrained=True)

print(vgg16_true)

train_data = torchvision.datasets.CIFAR10('../data', train=True, transform=torchvision.transforms.ToTensor(),
                                          download=True)

vgg16_true.classifier.add_module('add_linear', nn.Linear(1000, 10))
print(vgg16_true)

print(vgg16_false)
vgg16_false.classifier[6] = nn.Linear(4096, 10)
print(vgg16_false)

5.模型的保存与读取

import torch
import torchvision

vgg16 = torchvision.models.vgg16(pretrained=False)

# 保存方式1:模型结构+模型参数
torch.save(vgg16, "vgg16_method1.pth")

# 保存方式2:模型参数(官方推荐)
torch.save(vgg16.state_dict(), "vgg16_method2.pth")

import torchvision
import torch

# 方式1加载模型
model = torch.load("vgg16_method1.pth")
print(model)

# 方式2加载模型
vgg16 = torchvision.models.vgg16(pretrained=False)
vgg16.load_state_dict(torch.load("vgg16_method2.pth"))
model = torch.load("vgg16_method2.pth")
print(vgg16)

陷阱:当我们加载自己设计的模型的时候,需要在加载模型的地方引入我们的模型结构
from model_save import *
或
class model(nn.Module):
	...

6.正确率的计算

accuracy = (outputs.argmax(1) == target).sum()
outputs是模型的输出结果
target是标签

7.利用gpu进行训练

将
	1.网络模型
	2.数据(输入,标注)
	3.损失函数
加上.cuda()

例如:
model = Model()
if torch.cuda.is_available():
	model = model.cuda()
	
if torch.cuda.is_available():
	imgs = imgs.cuda()
	targets = targets.cuda()
	
if torch.cuda.is_available():
	loss_fn = loss_fn.cuda()
定义训练的设备
device = torch.device("cpu")
device = torch.device("cuda:0")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

model = model.to(device)
loss_fn = loss_fn.to(device)
imgs = imgs.to(device)
targets = targets.to(device)

8.google colab

每周好像是有30小时是免费的
如果要是想运行terminal语句的话就在前面加一个感叹号,比如!nvidia-smi

9.训练技巧

model.train()	#切换至训练模式
train...
model.eval()	#切换至测试模式
with torch.no_grad():	#可以增加测试性能
	output = model(input)

10.GPU与显卡的联系

显卡->驱动->cuda->pytorch->计算机

有了驱动计算机才能识别显卡
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值