pytorch实践

文章目录

    • 1、pytorch实现线性模型
    • 2、实现逻辑回归
    • 3、加载数据集

1、pytorch实现线性模型

import torch.nn as nn
import torchx_data=torch.Tensor([[1.0],[2.0],[3.0]])
y_data=torch.Tensor([[2.0],[4.0],[6.0]])
#继承自nn.Module就是可调用的 且有计算图 可以求梯度
class ModelLinear(nn.Module):def __init__(self):super(ModelLinear,self).__init__()self.linear=nn.Linear(1,1)  #这也是可调用的def forward(self,x):return self.linear(x)
model=ModelLinear()
#定义损失 也是可调用的 且有计算图
loss=nn.MSELoss(reduction='mean')
optimizer=torch.optim.SGD(model.parameters(),lr=0.05)for epoch in range(150):y_pred=model(x_data)l=loss(y_pred,y_data)  #前馈optimizer.zero_grad()  #清零l.backward()  #反馈optimizer.step() #更新
print('w:',model.linear.weight.item())

注意:
1、tensor 中可以迭代tensor
2、tensor对象.item() 可以将tensor转化为一个python的数值
但是tensor.data 仍然是tensor类型 但是不会有计算图了,关闭了计算图功能
3、继承自nn.Module 就是可调用的 且有计算图 可以求梯度

2、实现逻辑回归

import torch.nn as nn
import torchx_data=torch.Tensor([[1.0],[2.0],[3.0]])
y_data=torch.Tensor([[0],[0],[1]])
#继承自nn.Module就是可调用的
class ModelLogsitic(nn.Module):def __init__(self):super(ModelLogsitic,self).__init__()self.linear=nn.Linear(1,1)  # 输入的维度 输出的维度 是一个数据的维度def forward(self,x):return torch.nn.functional.sigmoid(self.linear(x))
model=ModelLogsitic()
#定义损失 也是可调用的 且有计算图
loss=nn.BCELoss(reduction='mean')
optimizer=torch.optim.SGD(model.parameters(),lr=0.05)for epoch in range(150):y_pred=model(x_data)l=loss(y_pred,y_data)  #前馈optimizer.zero_grad()  #清零l.backward()  #反馈optimizer.step() #更新
x_pre=torch.Tensor([2.1])
print('w:',model(x_pre).item())

3、加载数据集

import torch
from torch.utils.data import Dataset,DataLoader
'''
Dataset 是一个抽象类 必须实现 不能直接实例化
Dataloader 可以直接实例化
'''
class MyDataset(Dataset):def __init__(self):pass  #初始化加载文件def __len__(self):pass  #长度def __getitem__(self, index):pass  #根据index获取
dataset=MyDataset()  #数据集
#mini—batch 加载数据集
train_loader=DataLoader(dataset=dataset,shuffle=True,batch_size=4,num_workers=2)
for epoch in range(100):for i,data in enumerate(train_loader,0):inputs,label=data

4、多分类

import torch
from torch.utils.data import Dataset,DataLoader
train_loader=DataLoader()
import torch.nn as nn
#继承自nn.Module就是可调用的
class ModelLinear(nn.Module):def __init__(self):super(ModelLinear,self).__init__()self.linear=nn.Linear(1,1)def forward(self,x):return self.linear(x)
model=ModelLinear()
criterion=nn.CrossEntropyLoss()
optimizer=torch.optim.SGD(model.parameters(),lr=0.05)
def train(epoch):running_loss=0for i,data in enumerate(train_loader,0):inputs,labels=datay_pred=model(inputs)loss=criterion(y_pred,labels)optimizer.zero_grad()loss.backward()optimizer.step()running_loss+=loss.item()  #要加上item 否则会形成计算图 占内存 loss是一个标量if epoch%300==299:  #显示多少次迭代输出一次print()running_loss=0def test():correct=0total=0with torch.no_grad():for i,data in enumerate(test_loader,0):inputs,labels=datay_pre=model(inputs)_,y_labels=torch.max(y_pre.data,dim=1)total+=labels.size(0)correct+=(y_labels==labels).sum().item()print(100*correct/total)
if __name__ == "__main__":for epoch in range(10):train(epoch)test()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

包装类详解

概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对…

WSL里的Ubuntu 登录密码忘了怎么更改

环境: Win10 专业版 WSL2 如何 Ubuntu22.04 问题描述: WSL里的Ubuntu 登录密码忘了怎么更改 解决方案: 在WSL中的Ubuntu系统中,忘记了密码,可以通过以下步骤重置密码: 1.打开命令提示符或PowerShel…

[NOIP2011 普及组] 数字反转

AC代码&#xff1a; #include<iostream>using namespace std;int main() {long long n;cin >> n;long long temp n;long long sum 0;while(temp ! 0){int c temp % 10;sum sum * 10 c;temp temp / 10;}printf("%lld",sum);return 0; }

Linux使用Docker部署Nacos容器并结合内网穿透实现公网访问本地服务

文章目录 推荐1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff…

从0到1入门C++编程——08 函数模板和类模板

文章目录 函数模板1.函数模板基本语法2.函数模板使用的注意事项3.函数模板案例——数组排序4.普通函数和函数模板的区别5.普通函数和函数模板的调用规则6.模板的局限性 类模板1.类模板2.类模板和函数模板的区别3.类模板中成员函数创建时机4.类模板对象做函数参数5.类模板与继承…

代码随想录算法训练营第22天—回溯算法02 | ● *216.组合总和III ● 17.电话号码的字母组合

*216.组合总和III 题目链接/文章讲解&#xff1a;https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1wg411873x 考点 回溯剪枝 我的思路 回溯三要素 形参&#xff1a;目标和&#xff0c…

【数据结构与算法】动态规划法解题20240227

动态规划法 一、什么是动态规划二、动态规划的解题步骤三、509. 斐波那契数1、动规五部曲&#xff1a; 四、70. 爬楼梯1、动规五部曲&#xff1a; 五、746. 使用最小花费爬楼梯1、动规五部曲&#xff1a; 一、什么是动态规划 动态规划&#xff0c;英文&#xff1a;Dynamic Pro…

qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径

qt-C笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径 参考博文&#xff1a; 1.C笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 2.Linux笔记之LD_LIBRARY_PATH详解 3.qt-C笔记之使用QProcess去执行一个可执行文件时指定动态库所存放…

C# EF Core迁移数据库

现象&#xff1a; 在CodeFirst时&#xff0c;先写字段与表&#xff0c;创建数据库后&#xff0c;再添加内容 但字段与表会变更&#xff0c;比如改名删除增加等 需求&#xff1a; 当表字段变更时&#xff0c;同时变更数据库&#xff0c;执行数据库迁移 核心命令 Add-Migrat…

保险防忽悠指南

保险如何防忽悠&#xff1f; 1.只买消费型保险&#xff0c;不要买返还型保险。许多人买保险被忽悠&#xff0c;就是因为买了返还型保险。返还型保险保费贵&#xff0c;保额低&#xff0c;收益又低。消费型保险保费便宜&#xff0c;保额高&#xff0c;杠杆高。 圣经有云:上帝的…

什么是SSH端口转发?

目录 前言&#xff1a; 一、SSH端口转发的概念 二、SSH端口转发的类型 2.1 本地端口转发 2.2 远程端口转发 2.3 动态端口转发 三、SSH端口转发的用途 3.1 安全远程访问 3.2 跨越网络限制 3.3 加密流量传输 3.4 跨越 NAT 网络 3.5 安全代理 四、总结 前言&#xff…

函数重载 C++

在同一作用域中声明几个功能类似的同名函数&#xff0c;这些函数的形参列表不同&#xff08;个数或类型&#xff09; #include<iostream> using namespace std; // 1、参数类型不同 int Add(int left, int right) {cout << "int Add(int left, int right)&qu…

Spring Bean

Spring的配置方式 1、xml配置文件 2、基于注解的方式 3、基于Java的方式 Spring Bean的生命周期 1、通过构造器或工厂方法创建bean实例 2、为bean的属性赋值 3、调用bean的初始化方法 4、使用bean 5、当容器关闭时&#xff0c;调用bean的销毁方法 Spring inner beans …

【es6 】中的装饰器 decorator 到底是什么,有什么用,和ts 中的装饰器decorator有啥区别

es6 中的装饰器 decorator 再 es6 中新增了 3个器&#xff0c;分别是 迭代器、生成器、还有就是装饰器&#xff0c;关于迭代器和生成器可以参考这篇文章。​​​​ 装饰器实际上是 es7 提出来的&#xff0c;它允许你在类、类方法、类属性等声明前面添加特殊的修饰符&#xff…

octave 与 matlab

octave 与 matlab 联系与区别 Octave 和 Matlab 是两种数字计算和科学编程语言。它们之间有很多联系和区别。 联系&#xff1a; Octave 和 Matlab 都是为了进行数值计算和科学编程而设计的&#xff0c;它们都具有很强的数值计算和矩阵操作的能力。Octave 和 Matlab 都支持向量…

Spring中@Transactional注解的方法在不同Bean调用时的事务生效性

在Spring框架中&#xff0c;Transactional注解用于声明一个方法或类需要事务管理。当一个方法被Transactional注解标记时&#xff0c;Spring会为该方法的执行创建一个新的事务&#xff08;如果当前没有事务存在的话&#xff09;&#xff0c;或者在现有事务的上下文中运行&#…

记录 | docker内修改host方法

方法一&#xff1a; 直接进入容器中修改/etc/hosts 缺点&#xff1a;重启容器后&#xff0c;增加的内容会丢失 方法二&#xff1a; 制作镜像的时候&#xff0c;直接修改。 限制&#xff1a; 需要是root用户&#xff0c;需要在容器中安装sudo 增大了镜像大小 方法三&…

LeetCode 3019.按键变更的次数

给你一个下标从 0 开始的字符串 s &#xff0c;该字符串由用户输入。按键变更的定义是&#xff1a;使用与上次使用的按键不同的键。例如 s “ab” 表示按键变更一次&#xff0c;而 s “bBBb” 不存在按键变更。 返回用户输入过程中按键变更的次数。 注意&#xff1a;shift …

如何在安卓手机与电脑上写文章直接发布至自己的hexo静态博客网站上

#需求 1.当有了自己的hexo博客之后,就想随时随地在不同的设备之间写文章&#xff0c;并发布到自己的博客上。 #过程 2.突然有一天逛到别人的博客上&#xff0c;看到别人写了一篇文章&#xff0c;是用小书匠&#xff0c;能实现不同的设备写文章并发送至自己的静态网站。 #实现 3…

Java最新面试宝典 Spring面试题

Java最新面试宝典 Spring面试题 前言1、Spring是什么&#xff1f;2、Spring 的优点&#xff1f;3、什么是IOC&#xff1f;4、什么是 AOP&#xff1f;5、AOP 有哪些实现方式&#xff1f;6、什么是DI依赖注入&#xff1f;7、将一个类声明为Spring的 bean 的注解有哪些&#xff1f…