pytorch:tensorboard和transforms学习

  1. tensorboard:可视化数据

    在anaconda安装:

    pip install tensorboard==2.12.0
    

    最好使用这个版本 不然后面调用会报错 因为版本过高的原因

    然后还碰到了安装的时候 安装到C盘去了 但是我用的虚拟环境是在E盘:此时去C盘把那些新安装的复制过来就好了 附录我C盘的路径:C:\Users\asus\AppData\Roaming\Python\Python38\Scripts

    (搜索了一下有大佬说可能是python版本的问题 以后pip/conda install的时候指定一下python版本 可以先在虚拟环境中python --version查看一下)

  2. transforms:数据增强(数据预处理)

    transforms是个工具箱 里面有很多工具 可以处理图片得到一个结果

    tool = transforms.totensor()

    result = tool(input)

    为什么非要转化成tensor型?因为它里面有很多神经网络深度学习的参数 想要训练就需要tensor型

  3. 常见的transforms工具(按住ctrl可以进入源码)

    1. ToTensor()

      code:

      from PIL import Image
      from torch.utils.tensorboard import SummaryWriter
      from torchvision import transformswriter = SummaryWriter('../logs')
      #tensorboard --logdir=../logs
      img = Image.open('../images/1.jpg')
      print(img)# use TOTensor()
      trans_tensor = transforms.ToTensor()
      img_tensor = trans_tensor(img)
      writer.add_image('totensor',img_tensor,dataformats='CHW')writer.close()
      

      logs:

      在这里插入图片描述

    2. Normalize() 标准化

      设置Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) (这样设置可以实现归一化)

      input[channel] = (input[channel] - mean[channel]) / std[channel]

      =(input - 0.5) / 0.5

      =2 * input - 1

      input [0,1]

      result [-1,1]

      code:(在writer.close()之前加上)

      # use Normalize()
      print(img_tensor[0][0][0])
      trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
      #trans_norm = transforms.Normalize([1,2,3],[3,2,1])
      img_norm = trans_norm(img_tensor)
      print(img_norm[0][0][0])
      writer.add_image('normalize',img_norm)
      #writer.add_image('normalize',img_norm,1)
      

      logs:

      在这里插入图片描述

      可以换几个数据试一下:(冬天寒冷小苏 变成夏天红温小苏了)

      在这里插入图片描述

    3. Resize()

      改变图片大小

      code:

      #use Resize()
      print(img.size)
      trans_resize = transforms.Resize((512,512))
      img_resize = trans_resize(img)
      img_resize = trans_totensor(img_resize)
      print(img_resize)
      writer.add_image('resize',img_resize,0)
      

      好吧:是拉伸小饼

      在这里插入图片描述

    4. Compose()

      串联多个图片变换的操作

      code:

      #use Compose() - Resize() - 2
      trans_resize_2 = transforms.Resize(512)
      trans_compose = transforms.Compose([trans_resize_2,trans_totensor])
      img_resize_2 = trans_compose(img)
      writer.add_image('resize',img_resize_2,1)
      

      在这里插入图片描述

    5. RandomCrop()

      随机裁剪

      code:

      #use RandomCrop()
      trans_random = transforms.RandomCrop(512)
      trans_compose_2 = transforms.Compose([trans_random,trans_totensor])
      #随机裁剪十次
      for i in range(10):img_crop = trans_compose_2(img)writer.add_image('random_crop',img_crop,i)
      

      在这里插入图片描述

      在这里插入图片描述

      还可以根据宽和高裁剪的

      code:

      trans_random = transforms.RandomCrop((500,1000))
      trans_compose_3 = transforms.Compose([trans_random,trans_totensor])
      for i in range(10):img_crop = trans_compose_3(img)writer.add_image('random_crophw',img_crop,i)
      

      在这里插入图片描述

    6. 以上完整代码

      先展示目录结构:

      在这里插入图片描述

      code:

      from PIL import Image
      from torch.utils.tensorboard import SummaryWriter
      from torchvision import transforms
      import cv2
      import numpy as npwriter = SummaryWriter('../logs')
      #tensorboard --logdir=../logs
      img = Image.open('../images/1.jpg')
      print(img)# use TOTensor()
      trans_totensor = transforms.ToTensor()
      img_tensor = trans_totensor(img)
      writer.add_image('totensor',img_tensor,dataformats='CHW')# use Normalize()
      print(img_tensor[0][0][0])
      trans_norm = transforms.Normalize([1,2,3],[3,2,1])
      img_norm = trans_norm(img_tensor)
      print(img_norm[0][0][0])
      writer.add_image('normalize',img_norm,1)#use Resize()
      print(img.size)
      trans_resize = transforms.Resize((512,512))
      img_resize = trans_resize(img)
      img_resize = trans_totensor(img_resize)
      print(img_resize)
      writer.add_image('resize',img_resize,0)#use Compose() - Resize() - 2
      trans_resize_2 = transforms.Resize(512)
      trans_compose = transforms.Compose([trans_resize_2,trans_totensor])
      img_resize_2 = trans_compose(img)
      writer.add_image('resize',img_resize_2,1)#use RandomCrop()
      trans_random = transforms.RandomCrop(512)
      trans_compose_2 = transforms.Compose([trans_random,trans_totensor])
      for i in range(10):img_crop = trans_compose_2(img)writer.add_image('random_crop',img_crop,i)trans_random = transforms.RandomCrop((500,1000))
      trans_compose_3 = transforms.Compose([trans_random,trans_totensor])
      for i in range(10):img_crop = trans_compose_3(img)writer.add_image('random_crophw',img_crop,i)writer.close()
      

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

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

相关文章

常用的100个opencv函数

以下是OpenCV中最常用的100个函数及其作用与注意事项的全面整理,按功能模块分类,结合官方文档与工业实践优化排序。各函数均标注Python(cv2)和C(cv::)命名,重点参数以加粗突出: &…

【C++】红黑树,详解其规则与插入操作

各位大佬好,我是落羽!一个坚持不断学习进步的大学生。 如果您觉得我的文章有所帮助,欢迎多多互三分享交流,一起学习进步! 也欢迎关注我的blog主页: 落羽的落羽 一、红黑树的概念与规则 红黑树是一种更加特殊的平衡二…

Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解 目录 一、背景 二、:FFD算法libhci_face_camera_api.s…

PostgreSQL 16 Administration Cookbook 读书笔记:第7章 Database Administration

编写一个要么完全成功要么完全失败的脚本 事务(transaction)可以实现all or nothing。不过这里指的是psql的-和--single-transaction选项。可以实现transaction wrapper: 此选项只能与一个或多个 -c 和/或 -f 选项组合使用。它会导致 psql 在…

DeepSeekMath:突破开源语言模型在数学推理中的极限

温馨提示: 本篇文章已同步至"AI专题精讲" DeepSeekMath:突破开源语言模型在数学推理中的极限 摘要 数学推理由于其复杂且结构化的特性,对语言模型构成了重大挑战。本文介绍了 DeepSeekMath 7B,该模型在 DeepSeek-Code…

实体类序列化报错:Caused by: java.lang.NoSuchMethodException: com.xx.PoJo$Item.<init>()

原实体类代码EqualsAndHashCode(callSuper true) Data public class Pojo extends BaseBean {private static final long serialVersionUID -4291335073882689552L;ApiModelProperty("")private Integer id;......private List<Item> list;AllArgsConstructo…

基于单片机病床呼叫系统/床位呼叫系统

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 该系统是以单片机STM32F103为核心的基于无线网络的医院病房呼叫系统&#xff0c;分为从机和主机两…

[黑马头条]-登录实现思路

需求分析在黑马头条项目中&#xff0c;登录有两种方式&#xff1a;一种是用户输入账号密码后登录&#xff0c;这种方式登陆后的权限很大&#xff0c;可以查看&#xff0c;也可以进行其他操作&#xff1b;另一种方式就是用户点击不登录&#xff0c;以游客的身份进入系统&#xf…

了解.NET Core状态管理:优化技巧与常见问题解决方案

前言 欢迎关注dotnet研习社&#xff0c;今天我们聊聊“ .NET Core 中的状态管理”。 在Web应用程序中&#xff0c;管理和维持状态是一个非常重要的主题&#xff0c;尤其是在无状态的环境中&#xff0c;如 HTTP 协议和 RESTful API。对于基于 .NET Core 构建的应用程序&#xff…

504网关超时可能是哪些原因导致?

在网络访问中&#xff0c;504 网关超时&#xff08;Gateway Timeout&#xff09;如同一个突然亮起的警示灯&#xff0c;打断用户的浏览或操作流程。这个 HTTP 状态码意味着服务器作为网关或代理时&#xff0c;未能在规定时间内收到上游服务器的响应。引发504错误的核心因素有哪…

ComfyUI 常见报错问题解决方案合集(持续更新ing)

前言&#xff1a; 本文汇总了 5 大高频问题 及其解决方案&#xff0c;涵盖&#xff1a; HuggingFace 认证修复&#xff08;Token 申请 手动下载指南&#xff09; ComfyUI 版本更新&#xff08;完整命令 依赖管理&#xff09; 自启动配置&#xff08;Conda 环境 权限修复&…

完美解决Linux服务器tomcat开机自启动问题

经过多次测试终于彻底解决tomcat开机自启动的问题了 PID3ps aux | grep /home/server/shichuan/ | grep java | awk {print $2} if [ -n "$PID3" ]; then 这个判断pid的方式还是可能出现启动失败的情况 # tail -n 1 /home/server/shichuan/logs/catalina.out |grep…

kotlin部分常用特性总结

<h3>Kotlin中类和对象初始化</h3><ul> <li>添加open关键字代表可以被继承</li> <li>Any 是所有类的父类,类似Object,包含 equals() hashCode() toString()方法</li> <li>constructor 关键字代表构造函数, constructor关键字可…

PHP 就业核心技能速查手册

# PHP 就业核心技能速查手册 > 高效聚焦市场所需&#xff0c;快速提升竞争力 --- ## 一、语法基础&#xff08;必会&#xff01;&#xff09; php // 1. 变量与数据类型 $price 19.99; // 浮点型 $isStock true; // 布尔型 // 2. 流程控制 foreach ($…

从混沌到秩序:数据科学的热力学第二定律破局——线性回归的熵减模型 × 最小二乘的能量最小化 × 梯度下降的负反馈控制系统,用物理定律重构智能算法的统一场论

目录 一、机器学习是什么&#xff1f; 1.1 什么是机器学习&#xff1f; 1.2 机器学习的三大类型 二、线性回归是什么&#xff1f; 2.1 通俗理解 2.2 数学表达 三、最小二乘法&#xff08;Least Squares Method&#xff09; 3.1 什么是损失函数&#xff1f; 3.2 什么是最小…

BI 数据可视化平台建设(3)—首页性能提升实践

作者&#xff1a; vivo 互联网大数据团队- Wang Lei 本文是vivo互联网大数据团队《BI 数据可视化平台建设》系列文章第3篇。 随着越来越多代码的堆积&#xff0c;平台的运行加载性能也在逐步下降&#xff0c;在不同程度上极大地影响了用户体验&#xff0c;从而导致用户流失。本…

基于Python的毕业设计选题管理系统设计与实现

基于Python的毕业设计选题管理系统设计与实现摘要本论文详细阐述了一个基于Python的毕业设计选题管理系统的设计与实现过程。该系统采用了Python的Tkinter库构建图形用户界面&#xff0c;使用SQLite数据库存储数据&#xff0c;实现了高校毕业设计选题过程中的教师出题、学生选题…

如何在HTML5页面中嵌入视频

在HTML5中嵌入视频主要使用<video>标签&#xff0c;这是一种简单且标准的方式。以下是详细步骤和示例&#xff1a; 基础实现 <!DOCTYPE html> <html> <head><title>视频嵌入示例</title> </head> <body><!-- 基础视频播放器…

java操作Excel两种方式EasyExcel 和POI

一、POI1.引入依赖<!-- 03 xls--> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version> </dependency><!-- 07 xlsx --> <dependency><groupId>org.a…

Openlayers 面试题及答案180道(141-160)

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 141. 如何在生产环境中优…