【LLM学习之路】9月16日 第六天

【LLM学习之路】9月16日 第六天

损失函数

L1Loss

可以取平均也可以求和

参数解析

input (N,*) N是batchsize,星号代表可以是任意维度 不是输入的参数,只是描述数据

target 形状要同上

MSELoss平方差

CrossEntropyLoss交叉熵

inputs的形状要是(N, C) N是批次大小

复制代码
x = torch.tensor([0.1,0.2,0.3]) #形状为 (3,) 的 1D 张量
y = torch.tensor([1])
x = torch.reshape(x,(1,3)) #inputs 的形状要是 (N, C)
loss_cross = nn.CrossEntropyLoss()
result_cross = loss_cross(x,y)

反向传播

result_loss.backward()

优化器

套路是这样的

复制代码
optim = torch.optim.SGD(tudui.parameters(),loss=0.01)
optim.zero_grad() 进行梯度清零
result_loss.backward() 反向传播计算梯度
optim.step() 对模型参数进行调优

后面自己添加了如何使用显卡

复制代码
import torch
import torchvision.datasets
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.data import DataLoader
# 检查是否有 GPU 可用
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")

dataset = torchvision.datasets.CIFAR10("./data",train = False,download=True,transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset,batch_size=1)
class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        self.conv1 = Conv2d(3,32,5,padding=2)
        self.maxpool1 = MaxPool2d(2)
        self.conv2 = Conv2d(32,32,5,padding=2)
        self.maxpool2 = MaxPool2d(2)
        self.conv3 = Conv2d(32,64,5,padding=2)
        self.maxpool3 = MaxPool2d(2)
        self.flatten = Flatten()
        self.linear1 = Linear(1024,64)
        self.linear2 = Linear(64,10)

        self.model1 = Sequential(
            Conv2d(3, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10)
        )

    def forward(self,x):
        x = self.model1(x)
        return x
loss = nn.CrossEntropyLoss()
tudui = Tudui().to(device)
optim = torch.optim.SGD(tudui.parameters(),lr=0.01)

for epoch in range(20):
    running_loss = 0.0
    for data in dataloader:
        imgs,targets = data
        imgs,targets = imgs.to(device), targets.to(device)
        outputs = tudui(imgs)
        # print(outputs)
        # print(targets)
        result_loss = loss(outputs,targets)
        optim.zero_grad()
        result_loss.backward()
        optim.step()
        # print("ok")
        running_loss = result_loss + running_loss

    print(running_loss)

完整的模型验证套路

利用已经训练好的模型,然后给它提供输入

相关推荐
deng-c-f25 分钟前
Linux C/C++ 学习日记(28):KCP协议(四):如何实现更复杂的业务:将连接状态的管理进行封装,用户只需实现发送、接收、断开的处理逻辑。
学习·网络编程·kcp
之墨_27 分钟前
【大语言模型】—— 自注意力机制及其变体(交叉注意力、因果注意力、多头注意力)的代码实现
人工智能·语言模型·自然语言处理
2301_821919921 小时前
深度学习(四)
pytorch·深度学习
从孑开始1 小时前
ManySpeech.MoonshineAsr 使用指南
人工智能·ai·c#·.net·私有化部署·语音识别·onnx·asr·moonshine
涛涛讲AI1 小时前
一段音频多段字幕,让音频能够流畅自然对应字幕 AI生成视频,扣子生成剪映视频草稿
人工智能·音视频·语音识别
可触的未来,发芽的智生1 小时前
新奇特:黑猫警长的纳米世界,忆阻器与神经网络的智慧
javascript·人工智能·python·神经网络·架构
WWZZ20252 小时前
快速上手大模型:机器学习2(一元线性回归、代价函数、梯度下降法)
人工智能·算法·机器学习·计算机视觉·机器人·大模型·slam
AKAMAI2 小时前
数据孤岛破局之战 :跨业务分析的难题攻坚
运维·人工智能·云计算
Chicheng_MA2 小时前
算能 CV184 智能相机整体方案介绍
人工智能·数码相机·算能
Element_南笙2 小时前
吴恩达新课程:Agentic AI(笔记2)
数据库·人工智能·笔记·python·深度学习·ui·自然语言处理