pytorch学习笔记一

assert()断言函数,用于在调试过程中捕捉程序错误 断言函数,用于在调试过程中捕捉程序的错误。 “断言”在语文中的意思是“断定”、“十分肯定地说”,在编程中是指对某种假设条件进行检测,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序执行。 assert() 会对表达式expression进行检测: 如果expression的结果为 0(条件不成立),那么断言失败,表明程序出错,assert() 会向标准输出设备(一般是显示器)打印一条错误信息,并调用 abort() 函数终止程序的执行。 如果expression的 阅读详情

pytorch学习笔记一————预训练网络的使用

对应文件资源
此文章记录如何对一个他人已经训练好的神经网络进行测试或使用

torchvison项目

该项目包含一些表现优异的关于计算机视觉的神经网络架构

from torchvision import models
dir(models)

首字母大写的是许多流行模型的python类
首字母小写的是便捷函数

AlexNet

创建一个AlexNet实例(不过暂时还不需要用这个实例因为这个实例没有训练,我们需要的是一个训练好的网络,如下文的resnet101)

from torchvision import models
alexnet=models.AlexNet()

一个简单的预训练模型

以下是一个识别金毛的预训练模型
在这里插入图片描述

from torchvision import models
from torchvision import transforms
from PIL import Image
import torch
alexnet=models.AlexNet()
# 导入alexnet实例
resnet=models.resnet101(pretrained=True)
# 实例化一个具有101层的卷积神经网络,指示函数下载训练好的权重
preprocess=transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(
        mean=[0.485,0.456,0.406],
        std=[0.229,0.224,0.225]
    )])
# 定义一个预处理函数,缩放到256*256个像素,围绕中心裁剪为224*224个像素
# 并将其转化成一个张量,对其RGB分量进行归一化处理
img=Image.open("img/bobby.jpg")
# 加载图片
#img.show()
img_t=preprocess(img)
# 运用定义好的预处理函数对图像进行预处理
batch_t=torch.unsqueeze(img_t,0)
# 将img_t增加一个维度并设置维数为1
resnet.eval()
# 将网络设置为eval模式
out=resnet(batch_t)
with open("files/imagenet_classes.txt") as f:
    labels=[line.strip() for line in f.readlines()]
# 加载标签文件
_,index=torch.max(out,1)
# 获取最大值的索引
percentage=torch.nn.functional.softmax(out,dim=1)[0]*100
# 将out归一化到[0,1]之间再到化成百分制
_,indices=torch.sort(out,descending=True)
# 降序排列并提供原始数组的索引值
print([(labels[idx],percentage[idx].item()) for idx in indices[0][:5]])
# 输出分数最高的前5个答案

GAN游戏

这个程序展示利用对抗神经网络(GAN)将一个马转换成斑马的过程,当然参数都是训练好的
在这里插入图片描述

from distutils.errors import PreprocessError
import torch
import torch.nn as nn
class ResNetBlock(nn.Module): # <1>

    def __init__(self, dim):
        super(ResNetBlock, self).__init__()
        self.conv_block = self.build_conv_block(dim)

    def build_conv_block(self, dim):
        conv_block = []

        conv_block += [nn.ReflectionPad2d(1)]

        conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=0, bias=True),
                       nn.InstanceNorm2d(dim),
                       nn.ReLU(True)]

        conv_block += [nn.ReflectionPad2d(1)]

        conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=0, bias=True),
                       nn.InstanceNorm2d(dim)]

        return nn.Sequential(*conv_block)

    def forward(self, x):
        out = x + self.conv_block(x) # <2>
        return out


class ResNetGenerator(nn.Module):

    def __init__(self, input_nc=3, output_nc=3, ngf=64, n_blocks=9): # <3> 

        assert(n_blocks >= 0)
        super(ResNetGenerator, self).__init__()

        self.input_nc = input_nc
        self.output_nc = output_nc
        self.ngf = ngf

        model = [nn.ReflectionPad2d(3),
                 nn.Conv2d(input_nc, ngf, kernel_size=7, padding=0, bias=True),
                 nn.InstanceNorm2d(ngf),
                 nn.ReLU(True)]

        n_downsampling = 2
        for i in range(n_downsampling):
            mult = 2**i
            model += [nn.Conv2d(ngf * mult, ngf * mult * 2, kernel_size=3,
                                stride=2, padding=1, bias=True),
                      nn.InstanceNorm2d(ngf * mult * 2),
                      nn.ReLU(True)]

        mult = 2**n_downsampling
        for i in range(n_blocks):
            model += [ResNetBlock(ngf * mult)]

        for i in range(n_downsampling):
            mult = 2**(n_downsampling - i)
            model += [nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2),
                                         kernel_size=3, stride=2,
                                         padding=1, output_padding=1,
                                         bias=True),
                      nn.InstanceNorm2d(int(ngf * mult / 2)),
                      nn.ReLU(True)]

        model += [nn.ReflectionPad2d(3)]
        model += [nn.Conv2d(ngf, output_nc, kernel_size=7, padding=0)]
        model += [nn.Tanh()]

        self.model = nn.Sequential(*model)

    def forward(self, input): # <3>
        return self.model(input)
# 以上代码为创建一个神经网络,现在暂时不设计具体实现
netG=ResNetGenerator()
# 创建一个神经网络实例
model_path="files/horse2zebra_0.4.0.pth"
model_data=torch.load(model_path)
netG.load_state_dict(model_data)
# 将训练好的权重导入到模型当中
netG.eval()
# 将网络置于eval模式

from PIL import Image
from torchvision import transforms
preprocess=transforms.Compose([transforms.Resize(256),
    transforms.ToTensor()])
img=Image.open("img/horse.jpg")
img_t=preprocess(img)
batch_t=torch.unsqueeze(img_t,0)
batch_out=netG(batch_t)
# 以上操作均类似于第一个例子里的操作
out_t=(batch_out.data.squeeze()+1.0)/2.0
out_img=transforms.ToPILImage()(out_t)
out_img.show()
# 将生成好的图片转化成一个可以展现的照片
Pytorch学习笔记(一)——pytorch环境搭建配置 目录前言与前期准备一、Anaconda的安装1.1.Anaconda介绍1.2.Anaconda的下载安装1.3.Anaconda的配置下载源1.4.Anaconda的如何切换不同版本的pytorch(以cpu和gpu版本之间切换为例)二、Pytorch的安装2.1.Pytorch介绍2.2.Anaconda的下在线安装Pytorch2.3.Anaconda的下在线、离线混合安装Pytorch三、CUDA3.1.CUDA介绍3.2.CUDA版本的选择3.3.CUDA的安装3.4.CUDA版本安装错误怎么卸载 阅读详情

相关推荐

Pytorch学习笔记(一)

最近,Torch7 团队开源了 PyTorch。据该项目官网介绍,PyTorch 是一个 Python 优先的深度学习框架,能够在强大的 GPU 加速基础上实现张量和动态神经网络。 官网:http://pytorch.org/ github:https://github.com/pytorch/pytorch 官方文档:http://pytorch.org/docs/tensors.html

kongshuchen的博客 2万+

assert()函数用法总结

  assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( int expression );   assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 a...

1117

Pytorch学习笔记(一) 使用PyTorch搭建神经网络的套路

自古套路得人心!!! PyTorch Python中的张量和动态神经网络,具有强大的GPU加速功能。 目录 自古套路得人心!!! PyTorch 目录 常见模块的导入 构建网络模型 自定义Net类并实例化 使用顺序容器构建网络并实例化 定义训练函数 定义测试函数 常见模块的导入 import torch import torch.nn as nn...

ROM的博客 1万+

Pytorch——生成式对抗网络的实例

生成器的最终目标是要欺骗判别器,混淆真伪图像;而判别器的目标是发现他何时被欺骗了,同时告知生成器在生成图像的过程中可识别的错误。注意无论是判别器获胜还是生成器获胜,都不是字面意义上的获胜。两个网络都是基于彼此的训练结果来推动参数优化的。 这项技术已经被证明可以产生一个生成器,他只从一个噪声和一个条件信号生成逼真的图像。这里的条件信号是指属性或者其他图片,例如:年轻的、女性的、戴着眼镜的。这样的生成器产生的图片可以满足人的审美。

lqm1094583745的博客 1044

PyTorch学习笔记(一) PyTorch的安装

PyTorch的安装(服务器中安装,远程调用) PyTorch学习笔记系列是笔者跟随datawhale组队学习的学习成果,也包含了自学PyTorch的一些笔记和总结。 由于笔者使用Macbook作为开发机,性能较差,因此需要连接到有GPU的服务器中进行开发,因此本文主要介绍服务器中PyTorch环境的部署与远程连接方法,适用于自己电脑没有gpu,并且有服务器可用的朋友,服务器默认已通过ssh连接。 一、安装Anaconda/Miniconda Anaconda在windows环境更适合,因为其本身有GU

qq_32844743的博客 411

【2025最新】Multisim 14.3超详细安装步骤 【附安装包+永久+汉化】|Multisim 14.3

嗨,小伙伴们!是不是一直在找可靠的multisim下载安装教程?今天就给大家带来超详细的2025年Multisim 14.3安装全攻略!这款电路仿真神器绝对是学电子、做电路设计的必备工具!很多朋友后台留言说安装时各种报错、汉化失败,所以我决定出一期零基础、保姆级的教程,从下载到安装再到汉化,全部一步到位搞定!按照我的步骤来,包你顺利安装不出错!!!通过本教程,相信大家已经成功安装并配置好了Multisim 14.3。这款电路仿真神器能帮你设计和测试各种电路,从简单的LED闪烁到复杂的信号处理电路都不在话下。

pythonpapaxia的博客 8万+

assert(0)的作用

今天在看框架例子的代码里,发现很多地方没有做什么,就只是错误检查,然后后面就会跟一个assert(0),比较奇怪这个用意,所以特意差了一下记录在这里。定义assert宏的原型定义在#include <assert.h> void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,

xiaodoubao124的专栏 1万+

恒定跨导的奥秘:基于1:3电流镜的轨到轨运放输入级设计与仿真验证

本文深入探讨了基于1:3电流镜的轨到轨运放输入级设计,重点分析了恒定跨导(GM)的实现原理与仿真验证。通过精确的电流补偿机制和工艺参数优化,解决了传统运放在电源轨附近跨导下降的问题,为模拟集成电路设计提供了可靠的低电压解决方案。

weixin_33686714的博客 516

assert(0)的作用

捕捉逻辑错误。可以在程序逻辑必须为真的条件上设置断言。除非发生逻辑错误,否则断言对程序无任何影响。即预防性的错误检查,在认为不可能的执行到的情况下加一句ASSERT(0),如果运行到此,代码逻辑或条件就可能有问题。 程序没写完的标识,放个assert(0)调试运行时执行到此为报错中断,好知道成员函数还没写完。 转载于:https://www.cnblogs.com/How-Com...

weixin_30411997的博客 537

【模拟IC】从VCD到VEC:Cadence数模混合仿真中高效激励转换与HSIM工具链实战

本文详细解析了在Cadence数模混合仿真中,如何利用HSIM工具链的vcd2vec命令,将数字仿真生成的VCD文件高效转换为模拟仿真器所需的VEC格式激励文件。文章提供了从VCD文件预处理、io_top.sig文件编写、核心命令参数详解到Cadence ADE环境集成验证的全链路实战指南,并分享了自动化脚本方案,旨在解决数模混合验证中的“语言不通”难题,提升仿真效率。

k9l0m1的博客 121

信号完整性基础04:串扰(1)

我们理解了“单个”传输线(传输线是信号路径+回流路径,切记~),但大多数情况下单独“传输线”的情况并不多见(理想情况下的同轴线缆可以算一个),大多数我们PCB板上有成百上千条走线,它们组成了一个“大社会”,就如当年的TVB神剧《创世纪》一样,到处充满着恩怨情仇;稍处理不慎,单板这个“社会”就会崩溃。那么我们要从哪里入手去理解它呢?最基本的就是从两条PCB走线(传输线)之间的串扰开始。好,年前倒数第二章:《为什么会有串扰》。 ps:我们了解了x射线是啥,那么今天开始讲“放射线”,这两种东西是否就是同一种呢~

WKEZHENG的博客 6032

PyTorch学习笔记(一):PyTorch环境安装

本章详细介绍Pytorch安装教学,具体可参考:windows10下CUDA11.1、cuDNN8.0、tensorflow-gpu2.4.1安装教程以及问题解决方法_Win10中CUDA、cuDNN的安装与卸载 Pytorch详细安装-强推!

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 1万+

Mplus—随机截距交叉滞后模型(Random Intercepts Cross-Lagged Panel Model, RI-CLPM)

介绍随机截距交叉滞后模型(Random Intercepts Cross-Lagged Panel Model, RI-CLPM)的相关知识,例如模型内容、Mplus语法及对应网址等。

m0_54401011的博客 9532

pytorch学习笔记(一)pytorch基础知识

张量是现代机器学习基础,它的核心是一个数据容器,不同维度的张量可以表示不同的数据类型3维:时间序列4维:图像5维:视频但是,在机器学习工作中,我们经常要处理不止一张图片或一篇文档——我们要处理一个集合。在PyTorch中,是存储和变换数据的主要工具PyTorch 中,所有神经网络的核心是autograd包。autograd包为张量上的所有操作提供了自动求导机制。它是一个在运行时定义 ( define-by-run )的框架,这意味着反向传播是根据代码如何运行来决定的,并且每次迭代可以是不同的。......

qq_51738873的博客 640

PyCharm配置SSH和SFTP远程连接服务器

关于这篇博文,主要因为公司企业都是通过本地测试,同步到服务器进行跑动,舍友看着同事丝滑的操作,让我做个教程。本着钻研的精神,写下了这篇博客记录 关于pycharm这个软件,只有专业版才有远程连接的这个配置,社区版没有(同事一再强调要专业版,学生认证还可申请免费) 关于SSH和SFTP都是一种协议 具体知识点补充可看我这篇文章: 【计算机网络】常见面试题集锦(全) SSH:提供安全通道进行远程登录 SFTP协议可以远程文件传输获取等,数据的安全传输主要由SSH连接提供

码农研究僧的博客 5533

AI智能体丨使用Coze一键生成中式养生视频,39 条作品涨粉 37.9 万!(附保姆级教程)

本文介绍如何利用扣子(Coze)AI智能体工作流高效制作中式养生短视频。该方案通过AI自动生成养生文案、古风插画素材、语音合成和视频剪辑,将传统制作流程从2-3小时缩短至1-2分钟。工作流包含文案创作、音频生成、图片素材制作和视频合成四大模块,采用大模型处理各环节内容,最终输出可直接导入剪映的草稿文件。特别适合希望快速批量制作文化氛围感强、兼具干货与视觉效果的养生内容创作者,效率提升近百倍。

李同学Lino的博客 3027

pytorch学习笔记一:认识pytorch

一、什么是pytorch PyTorch是一个深度学习框架,它是基于Python的科学计算软件包,可实现两个广泛的目的: 1、替代NumPy,以使用GPU和其他加速器的功能。 2、一个自动微分库,对实现神经网络很有用 所谓的框架就是别人把底层做好了,应用者只需要在框架上搭建自己的城堡就行 二、什么是torch Torch是一个与Numpy类似的张量(Tensor)操作库,与Numpy不同的是Torch对GPU支持的很好 三、使用pytorch需要理解的几个概念 3.1 张量 张量是一种特殊的数据结构,与数组

rs_gis的博客 402

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PyTorch 学习笔记(一):让PyTorch读取你的数据集

本文截取自《PyTorch 模型训练实用教程》,获取全文pdf请点击:https://github.com/tensor-yu/PyTorch_Tutorial 转载请注明出处:

人工智能技术学习与分享 6万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

小土堆pytorch学习笔记一

本文介绍了如何使用PyTorch处理图像数据集的三个核心内容:1. 自定义Dataset类 2. TensorBoard可视化 3. Transforms的使用

m0_72765463的博客 1412

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Pytorch学习笔记(一)—— Pytorch基础

更多文章代码详情可查看博主个人网站:https://www.iwtmbtly.com/导入需要使用的库和文件: 一、什么是Tensor 在深度学习中,从数据的组织,到模型内部的参数,都是通过一种叫做张量(Tensor)的数据结构进行表示和处理。Tensor 是深度学习框架中极为基础的概念,也是 PyTroch、TensorFlow 中最重要的知识 点之一,它是一种数据的存储和处理结构。回忆一下我们目前知道的几种数据表示:为了帮助你更好理解标量、向量和矩阵,我特意准备了一张示意图,可以结合图片理解。不难发现,

qq_43300880的博客 2048

pytorch速成学习笔记(一)(pytorch、张量、autograd)

Tensors的声明和定义方法,分别有以下几种。

weixin_64591327的博客 1122

[pytorch][进阶之路]pytorch学习笔记一

1. Tensor是一个高维数组,可以通过GPU加速运算 import torch as t x = t.Tensor(5, 3) # 构建Tensor x = t.Tensor([[1,2],[3,4]]) # 初始化Tendor x = t.rand(5, 3) # 使用[0,1]均匀分布随机初始化二维数组 print(x.size()) # 查看x的形状 x.size()[1],...

weixin_30642305的博客 142

pytorch 学习笔记(一)

pytorch是一个动态的建图的工具。不像Tensorflow那样,先建图,然后通过feed和run重复执行建好的图。相对来说,pytorch具有更好的灵活性。 编写一个深度网络需要关注的地方是: 1. 网络的参数应该由什么对象保存 2. 如何构建网络 3. 如何计算梯度和更新参数 数据放在什么对象中 pytorch中有两种变量类型,一个是Tensor,一个是Variable。(0...

Keith 9万+
上一篇: java学习笔记——文档注释标记总结
下一篇: pytorch学习笔记二
StrangeStranger
博客等级 码龄6年 24粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值