用Pip配置Pytorch环境 (Pytorch==2.3.0)

用Pip配置Pytorch环境 (Pytorch==2.3.0)

本文主要讲解: 如何用Conda搭建Pytorch环境,用Conda的方式安装,需要单独去安装Cuda。

1. 下载Python安装包

安装Python 3.10.11,下载地址 Python 3.10.11

2. CUDA 安装

安装CUDA 12.1, 查看官网:CUDA 12.1
下载地址 CUDA 12.1

cuda安装完之后,已经配置好环境路径了,直接在cmd中查看

nvcc -V

3. Cudnn 8.x 安装

安装Cudnn 8.x, 查看官网:Cudnn 8.x
下载地址 Cudnn 8.x

把cudnn8.x解压出来的文件,拷贝到cuda下,有对应的文件下名称,对应拷贝过去。

4. 安装Pytorch

pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121

5. 安装常用包

pip install scikit-learn einops ipywidgets pandas tqdm jupyterlab matplotlib seaborn

6. pip设置清华源

pip config list
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

7. 一个分类网络的例子

测试Pytorch环境是否Okay

python mnist.py

文件mnist.py内容:

# Task
# Our task is simple, recognize handwritten digits. We will use MNIST dataset for this tutorial.
# # # Import necessary library
# In this tutorial, we are going to use pytorch, the cutting-edge deep learning framework to complete our task.# In[2]:import torch
import torchvision# In[3]:## Create dataloader, in PyTorch, we feed the trainer data with use of dataloader
## We create dataloader with dataset from torchvision, 
## and we dont have to download it seperately, all automatically done# Define batch size, batch size is how much data you feed for training in one iteration
batch_size_train = 64 # We use a small batch size here for training
batch_size_test = 1024 ## define how image transformed
image_transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor(),torchvision.transforms.Normalize((0.1307,), (0.3081,))])
#image datasets
train_dataset = torchvision.datasets.MNIST('dataset/', train=True, download=True,transform=image_transform)
test_dataset = torchvision.datasets.MNIST('dataset/', train=False, download=True,transform=image_transform)
#data loaders
train_loader = torch.utils.data.DataLoader(train_dataset,batch_size=batch_size_train, shuffle=True)
test_loader = torch.utils.data.DataLoader(test_dataset,batch_size=batch_size_test, shuffle=True)# In[64]:# import library
# We can check the dataloader
_, (example_datas, labels) = next(enumerate(test_loader))
sample = example_datas[0][0]
# show the data# In[60]:## Now we can start to build our CNN model
## We first import the pytorch nn module and optimizer
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
## Then define the model class
class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()#input channel 1, output channel 10self.conv1 = nn.Conv2d(1, 10, kernel_size=5, stride=1)#input channel 10, output channel 20self.conv2 = nn.Conv2d(10, 20, kernel_size=5, stride=1)#dropout layerself.conv2_drop = nn.Dropout2d()#fully connected layerself.fc1 = nn.Linear(320, 5000)self.fc2 = nn.Linear(5000, 10)def forward(self, x):x = self.conv1(x)x = F.max_pool2d(x, 2)x = F.relu(x)x = self.conv2(x)x = self.conv2_drop(x)x = F.max_pool2d(x, 2)x = F.relu(x)x = x.view(-1, 320)x = self.fc1(x)x = F.relu(x)x = F.dropout(x)x = self.fc2(x)return F.log_softmax(x)# In[61]:## create model and optimizer
learning_rate = 0.01
momentum = 0.5
device = "cuda"
model = CNN().to(device) #using cpu here
optimizer = optim.SGD(model.parameters(), lr=learning_rate,momentum=momentum)# In[78]:##define train function
def train(model, device, train_loader, optimizer, epoch, log_interval=10000):model.train()counter = 0for batch_idx, (data, target) in enumerate(train_loader):data, target = data.to(device), target.to(device)optimizer.zero_grad()output = model(data)loss = F.nll_loss(output, target)loss.backward()optimizer.step()counter += 1print("loss:", loss.item())
##define test function
def test(model, device, test_loader):model.eval()test_loss = 0correct = 0with torch.no_grad():for data, target in test_loader:data, target = data.to(device), target.to(device)output = model(data)test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch losspred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probabilitycorrect += pred.eq(target.view_as(pred)).sum().item()test_loss /= len(test_loader.dataset)print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(test_loss, correct, len(test_loader.dataset),100. * correct / len(test_loader.dataset)))# In[79]:num_epoch = 10
for epoch in range(1, num_epoch + 1):train(model, device, train_loader, optimizer, epoch)test(model, device, test_loader)# In[70]:# from torchsummary import summary
# summary(model, (1, 28, 28))

END


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

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

相关文章

JavaSE—泛型

1 泛型定义和基本使用 泛型是JDK1.5以后才有的, 可以在编译时期进行类型检查,且可以避免频繁类型转化! Test public void test1() {List list new ArrayList();list.add("ZhangSan");list.add(1);//集合使用 取出元素Object obj…

R语言数据探索和分析22-使用随机森林和聚类算法探索和预测健康状况

一、研究背景 在两个实验中,使用了一组综合性的生物统计数据来探索和预测健康状况(特别是疾病的发生)。实验的核心在于应用高级数据分析技术,具体包括随机森林分类和聚类分析,来洞察和预测个体的健康状况。首先&#…

【十大排序算法】选择排序

选择就像是在谱曲,每个决定就是一个音符,只有将它们有序地安排在一起,才能奏响美妙的乐章。 文章目录 一、选择排序的思想二、选择排序的发展历程三、选择排序具象化四、选择排序算法实现五、选择排序的特性推荐阅读 一、选择排序的思想 选…

Kafka初步学习

kafka消息队列模式 点对点模式:一对一,消费者主动拉取数据,消息收到后消息清除 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息 消息被消费以后,queue中不再有存储,所以消息消费…

【DevOps】网站安全事件分析方法详解和实战分析

目录 一、网站安全事件分析流程 二、常用的网站安全事件分析方法 三、网站被植入挖矿脚本事件分析 1、 事件发现与确认 2、 事件隔离与取证 3、 事件分析与溯源 4、 事件处置与恢复 5、 事件总结与改进 四、网站安全事件分析的关键点 五、提高网站安全事件分析能力的…

python使用appium截图手机屏幕图片

要使用 Appium 截取手机屏幕图片并在电脑上显示,你需要执行几个步骤。以下是一个基本的流程: 设置 Appium 环境:确保你已经安装了 Appium 服务器和 Python 客户端库(如 appium-python-client)。编写 Python 脚本&…

详解大厂实时数仓建设V4.0

一、实时数仓建设背景 1. 实时需求日趋迫切 目前各大公司的产品需求和内部决策对于数据实时性的要求越来越迫切,需要实时数仓的能力来赋能。传统离线数仓的数据时效性是 T1,调度频率以天为单位,无法支撑实时场景的数据需求。即使能将调度频…

参数传递和剪枝,从修剪二叉树谈起

669. 修剪二叉搜索树 - 力扣(LeetCode) 一、参数传递 Java中的参数传递方式只有一种,那就是值传递。如果我们传的是基本数据类型,那么函数接收到的就是该数据的副本,如果我们传的是对象,那么函数接收到的就…

Uniapp与第三方应用数据通讯

首先说明一点,这个只是uniapp代码编写的应用之间相互传递数据,uniapp编写的与其他语言编写的我尚不知道能不能传递。 应用1: plus.runtime.launchApplication({pname: "应用的appid",// extra 中可以自定数据,url和da…

【Qt知识】部分QWidget属性表格

QWidget是Qt库中所有图形用户界面组件的基类,它提供了大量属性以供自定义和配置控件的行为和外观。下面列出了一些主要的QWidget属性及其作用。 属性 作用 accessibleName 控件的辅助技术名称,用于无障碍访问。 accessibleDescription 控件的辅助技…

详解MySQL的间隙锁

MySQL 的间隙锁(Gap Lock) 间隙锁(Gap Lock)是 InnoDB 存储引擎中的一种锁机制,用于防止幻读现象。幻读是指在一个事务中,两次读取同一个范围的数据时,第二次读取出现了第一次没有出现的数据行…

CSS真题合集(一)

CSS真题合集(一) 1. 盒子模型1.1 盒子模型的基本组成1.2 盒子模型的实际大小1.3 盒子模型的两种类型1.4 设置盒子模型1.5 弹性盒子模型 2. BFC2.1 主要用途2.2 触发BFC的方法2.2 解决外边距的塌陷问题(垂直塌陷) 3. 响应式布局3.1…

接口自动化框架封装思想建立(全)

httprunner框架(上) 一、什么是Httprunner? 1.httprunner是一个面向http协议的通用测试框架,以前比较流行的是2.X版本。 2.他的思想是只需要维护yaml/json文件就可以实现接口自动化测试,性能测试,线上监…

spring aop小记

一、aop概念 面向切面编程 参考:https://blog.csdn.net/lhj520cb/article/details/125820513 常用术语解释(根据代码理解的): Aspect(切面):Advice 通知(即增强)和 Pointcut 切点的结合。(数学上可以理…

#define 和 const 定义常量的区别

文章目录 一、数组定义1.1 全局作用域中定义数组1.2 局部作用域定义数组 二、细节补充2.1 #define 和 const 的区别2.2 全局数组和局部数组的区别2.3 编译时常量 vs 运行时常量2.4 为什么局部作用域不要求编译时常量 总结 一、数组定义 1.1 全局作用域中定义数组 在全局作用域…

【Android面试八股文】Java异常机制中,异常Exception与错误Error区别是什么?

Java异常机制中,异常Exception与错误Error区别是什么? 这道题想考察什么? 在开发时需要时候需要自定义异常时,应该选择定义Excption还是Error? 编写的代码触发Excption或者Error分别代表什么? 考察的知识点 Java异常机制 考生应该如何回答 在Java中存在一个 Throwa…

Git - 详解 创建一个新仓库 / 推送现有文件夹 / 推送现有的 Git 仓库 到私有Gitlab

文章目录 【推送现有文件夹】详细步骤指令说明Git 全局设置设置Git全局用户名设置Git全局电子邮件地址 推送现有文件夹1. 进入现有文件夹2. 初始化Git仓库并设置初始分支为main3. 添加远程仓库4. 添加所有文件到暂存区5. 提交更改6. 推送代码到远程仓库并设置上游分支 创建一个…

ESXi内安装OpenWrt

目录 0、前言 1、环境 2、转换格式 3、创建虚拟机 4、OpenWrt设置 5、单臂流量测试 6、总结 0、前言 前几天在ESXi中先安装了PVE,然后在PVE中安装OpenWrt,没有来得及深入测试,仅仅作为安装和熟悉PVE的过程。后来转念一想为什么不在ES…

js之this

最近写代码学习了this,这个非常好用啊,今天拿出来给大家分享一下,根据我的理解以及前辈们的讲解 this 关键字代表当前执行上下文中的对象。它通常指向调用函数的对象,但其值可能取决于函数的调用方式。 全局上下文中的 this&…

项目经验,用什么思路去叙述?

文章目录 前言一、项目经验二、关于自学 前言 如果你的项目掌握的不高,面试官对项目的拷打,hold不住怎么办?首先一定要把项目说通透,一定要会说,就算可能没真实做过一个项目,会说出来讲通透就行。写在简历…