前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度学习Pytorch(二)

深度学习Pytorch(二)

原创
作者头像
用户8178468
修改于 2023-03-09 13:25:19
修改于 2023-03-09 13:25:19
40800
代码可运行
举报
文章被收录于专栏:bgemini的文章bgemini的文章
运行总次数:0
代码可运行

深度学习Pytorch(二)

前言:关于Pycharm终端显示PS而不显示虚拟环境名

解决办法:

  1. 打开Pycharm的设置(File——>setting),找到Tools,点击Terminal
  2. 可以看到Shell path处给的路径是powershell.exe,所以终端才会一直显示PS
  3. 将此处路径改为 C:\Windows\system32\cmd.exe,一般路径都是这个,改好之后点击OK即可
  4. 关掉设置后重新打开终端,就可以看到自己的虚拟环境名了

一、Python文件、Python控制台、Jupyter的对比

  1. 代码是以块为一个整体运行的话:

Python文件:块是所有行的代码

优点:通用,传播方便,适用于大型项目

缺点:需要从头运行

Python控制台:以任意行为块运行

优点:显示每个变量属性

缺点:不利于代码阅读及修改

Jupyter:以任意行为块运行的

优点:利于代码阅读及修改

缺点:环境需要配置

二、Pytorch加载数据

Dataset类:

提供一种方式去获取数据及其label,它的功能是如何获取每一个数据及其label,并告诉我们总共有多少的数据

Dataloader类:

为后面的网络提供不同的数据形式

  1. 在Pycharm中创建一个read_data的Python文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   from torch.utils.data import Dataset
   help(Dataset)  #或者直接使用Dataset??

使用以上代码可以查看Dataset类的用法

  1. 下面是读取数据的具体代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   from torch.utils.data import Dataset
   from PIL import Image
   import os
   class MyData(Dataset):
   def __init__(self,root_dir,label_dir):     #root_dirw为ants目录上层目录,label_dir为ants目录,此ants目录的目录名即为标签名
       self.root_dir=root_dir
       self.label_dir=label_dir
       self.path=os.path.join(self.root_dir,self.label_dir)   #拼接
       self.img_path=os.listdir(self.path)     #得到ants目录中所有图片的名字列表
   def __getitem__(self, idx):    #idx为编号
       img_name=self.img_path[idx]
       img_item_path=os.path.join(self.root_dir,self.label_dir,img_name)   #拼接
       img=Image.open(img_item_path)
       label = self.label_dir
       return  img,label
   def __len__(self):
       return len(self.img_path)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   root_dir="dataset/train"
   ants_label_dir="ants"
   bees_label_dir="bees"
   ants_dataset=MyData(root_dir,ants_label_dir)   #创建蚂蚁数据集
   bees_dataset=MyData(root_dir,bees_label_dir)    #创建蜜蜂数据集
   train_dataset=ants_dataset+bees_dataset      #将蚂蚁数据集和蜜蜂数据集进行拼接
   img,label=train_dataset0      #相当于直接调用getitem函数,返回两个参数
   img.show()

注意:这里采用的是以文件夹名来作为标签名的情况,如果标签名比较复杂,还有一种方式即采用两个文件夹,一个文件夹里放图片,另一个文件夹放对应名称的txt文件,每个txt文件里存有标签名。

三、TensorBoard的使用(add_scalar的使用)

请先看前言!

进入Pytorch环境后安装tensorboard:

代码语言:shell
AI代码解释
复制
pip install tensorboard

新建一个Python文件:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter("logs")   #存储到logs文件夹下

# writer.add_image()
# y=x
for i in range(100):
    writer.add_scalar("y=x",i,i)    #第一个参数是标题,第二个参数是y轴,第三个参数是x轴
writer.close()

run以下以上代码后会生成一个logs文件夹,里面有我们的事件文件!

之后进入Pycharm终端,确保在Pytorch环境中,输入以下命令:

代码语言:shell
AI代码解释
复制
tensorboard --logdir=logs --port=6007   #logdir为事件文件所在文件夹名,port指定端口

会出现一个网址,进入即可得到咱们的scalar!

注意:每向wirter写入一个新的事件时,会保留上一次的事件,所以当我们需要变换函数的时候,一种方法是将logs文件夹中的事件文件全部删除,重新run!

四、TensorBoard的使用(add_image的使用)

(后面学习用,这次不用)进入Pytorch环境安装opencv:

代码语言:shell
AI代码解释
复制
pip install opencv-python
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from PIL import Image
image_path="dataset/train/ants/0013035.jpg"
img=Image.open(image_path)
print(type(img))

以上使用PIL获取图片,得到的图片格式是<class 'PIL.JpegImagePlugin.JpegImageFile'>

下面是add_image的三个参数,可以看到第二个参数只能使用三个类型,所以我们使用PIL的方式无法满足要求,但其中的numpy类型,可利用Opencv读取照片获得numpy型图片数据。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
Args:
            tag (str): Data identifier
            img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data
            global_step (int): Global step value to record

此次不使用opencv获取图片,我们使用numpy.array(),对PIL图片进行转换

代码语言:txt
AI代码解释
复制
import numpy as np
img_array=np.array(img)
print(type(img_array))

结果是<class 'numpy.ndarray'>,符合要求

综上代码如下:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
writer=SummaryWriter("logs")   #存储到logs文件夹下

image_path="dataset/train/ants/69639610_95e0de17aa.jpg"
img_PIL=Image.open(image_path)    #得到PIL格式的图片
img_array=np.array(img_PIL)      #将PIL格式的图片转换为numpy格式的
print(type(img_array))
print(img_array.shape)
#从PIL到numpy,需要在add_image()中指定shape中每一个数字/维表示的含义
writer.add_image("train",img_array,1,dataformats='HWC')  #dataformats参数为高度H,宽度W,通道C,不清楚图片的类型就用图片.shape查看
#第二个参数为指定步数
# y=x
for i in range(100):
    writer.add_scalar("y=x",i,i)    #第一个参数是标题,第二个参数是y轴,第三个参数是x轴
writer.close()

run后进入Pycharm终端,确保在Pytorch环境中,输入以下命令:

代码语言:shell
AI代码解释
复制
tensorboard --logdir=logs --port=6007   #logdir为事件文件所在文件夹名,port指定端口

打开网页即可!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
WP_Query 的所有参数
WP_Query 是 WordPress 的核心,它支持的参数非常灵活,也非常多,官方的文档也略嫌啰嗦,整理把所有的参数都整理了一遍,以后要使用 WP_Query 只要看这份文档就够了:
Denis
2023/04/15
5440
query_posts函数使用方法小结|wordpress技巧
  query_posts是wordpress非常好用的调用文章函数,可以调用某个分类、标签、日期及作者等不同范围的文章列表。下面随ytkah一起来看看query_posts函数使用方法小结
ytkah
2019/10/24
9920
WordPress JSON REST API简单介绍及使用
这个插件(WordPress JSON REST API (WP API))提供了一个易于使用的REST API,让我们可以通过HTTP获取简单方便的JSON格式的数据,这些数据包括用户,文章,分类等等。获取或更新数据非常简单,只需要发送一个HTTP请求就可以了。
kl博主
2023/11/17
1.4K0
WordPress 查询参数(WordPress Query Vars)完全列表
WordPress 查询参数分公开(Public)和私用(Private),公开就是可以博客链接加入参数就可以查询数据,而私有只能在代码中通过参数传递 WP_Query class。
Denis
2023/04/13
5950
自定义wordpress侧边栏小工具
作者:matrix 被围观: 1,726 次 发布时间:2014-01-25 分类:Wordpress | 4 条评论 »
HHTjim 部落格
2022/09/26
3200
自定义wordpress侧边栏小工具
WordPress自定义查询WP_Query使用方法大全
  自定义调用文章在网站建设中很常用,wordpress也很人性化,用新建查询new WP_Query就能实现相关功能。WP_Query怎么用呢?随ytkah一起来看看吧
ytkah
2019/12/25
4.5K0
CVE-2022-21661:通过 WORDPRESS SQL 注入暴露数据库信息
今年 10 月,我们收到了来自 GiaoHangTietKiem JSC 的 ngocnb 和 khuyenn 的报告,涉及 WordPress 中的 SQL 注入漏洞。该漏洞可能允许攻击者暴露存储在连接数据库中的数据。此漏洞最近被解决为 CVE-2022-21661 ( ZDI-22-220 )。该博客涵盖了该错误的根本原因,并着眼于 WordPress 团队如何选择解决它。首先,这是一个演示该漏洞的快速视频:
Khan安全团队
2022/01/21
4.6K0
史上最详细的WordPress的自定义文章类型指南(1)
最近我发现有很多从google过来的奇怪的关键字,比如best screenshot app 这种,可能是我的这个域名bestscreenshot.com 当时买的有点太随意了。不过这正好也给了我一点灵感,一直以来我自己也算是对各种优秀的工具和软件挺感兴趣的,不管是命令行的还是图形化界面的也都积攒了好多好东西,正好可以在博客上做一点推荐,也可以算作是一种优质内容的补充。
丘壑
2019/04/26
4.5K0
WordPress主题开发,从入门到精通。
相关文档:https://www.wpzhiku.com/document/wordpress-plugin-basics/
房东的狗丶
2023/02/17
10.9K0
【译】WordPress 中的50个过滤器(3):第11-20个过滤器
本文为系列第三篇,原文:50 Filters of WordPress: Filters 11-20 原文地址 不多说,直接进入正题。 本系列文章翻译自tutsplus,原作者为Barış Ünver,翻译人:Jeff,转载请注明原始来源及翻译人,谢谢! 本文若有修正,不会更新于本页,只会更新到Github项目地址上。 在WordPress 中使用可翻译的数据 WordPress 的有一点强大之处就是几乎每一句语言都可以被翻译。如果你的网站语言是英语,你可能就没有这个需求;但其它语系的客户呢? gett
Jeff
2018/01/22
9210
WordPress 技巧:后台文章列表添加自定义分类筛选
如果你的文章或者文章类型添加了自定义分类,下面的代码可以在 WordPress 后台文章列表添加自定义分类下拉筛选框,快速通过自定义分类筛选文章。
Denis
2023/04/13
8360
Simple microblogging [增强版]-WordPress说说插件
* 网站名称:obaby@mars * 网址:https://h4ck.org.cn/ * 本文标题: 《Simple microblogging [增强版]-WordPress说说插件》 * 本文链接:https://h4ck.org.cn/2023/03/simple-microblogging-%e5%a2%9e%e5%bc%ba%e7%89%88/ * 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。
obaby
2023/03/31
5260
Simple microblogging [增强版]-WordPress说说插件
为WordPress添加分页
有的主题只有向前/向后翻页,不能直接点击页码,还不知道有多少页。可是如果你不知道怎么做,只得叹气换主题——你还可以改呀。
gojam
2019/05/14
1.6K0
分享WordPress各种标签大全集合 以及如何调用
wordpress程序日渐成熟,开发者越来越多,各种模版层出不穷,但是想要做一个好的wordpress模版,前提不只是要掌握HTML5前端技术,还必须了解wordpress的各种标签如何调用才可以。今天全百科网就把整理的WordPress各种标签以及是如何调用分享给大家。
于飞云计算
2019/07/22
3.3K0
分享WordPress各种标签大全集合 以及如何调用
WordPress数据库及各表结构
WordPress使用MySQL数据库。作为一个开发者,我们有必要掌握WordPress数据库的基本构造,并在自己的插件或主题中使用他们。
幻影龙王
2021/09/08
3.6K0
wordpress默认css样式class和id集合
  你是否想过如何设计WordPress主题的不同元素?每个主题都不一样,但是有一些CSS的class和id是由WordPress生成的。我们将逐一介绍一些最重要的默认WordPress样式,方便初学
ytkah
2019/07/23
1.1K0
WordPress文章归档页面分组和分页
WordPress 归档页面是一个网站的历史内容存档,它允许用户浏览网站的过去内容。它的存在有以下几个意义:
楚客追梦
2024/08/07
2950
WordPress丨常见函数及拓展模板函数大全
wordpress模板是由PHP语句组成,很多不懂代码的站长都被PHP复杂的代码难倒,难以自己开发个性化的模板。其实想开发一个wordpress模板并不是太难,大家只要了解一些wordpress中的常用函数,即可按照自己的需要进行内容调用了。更高端一点的类似于一些PHP语句的判断等等,这就需要大家自己去学习提高了。本篇文章主要讲解wordpress开发模板中经常需要用到的一些函数。
V站CEO-西顾
2018/06/08
1.9K0
WordPress SEO优化:纯代码添加canonical标签
为网站添加添加canonical标签是SEO优化中非常重要的一步,rrel="canonical"可以解决因网址不同但内容重复,从而造成权重分散的问题,目前百度、Google、雅虎、微软等搜索引擎都已支持此标签。
Yangsh888
2022/08/15
6520
wordpress代码实现相关文章的几种方法
相关文章分类方法主要有根据文章标签以及文章所属分类来进行区分,以下代码分别使用wordpress自带的query_posts()函数以及直接读取数据库来获取文章的相关文章。另附上获取文章作者的其他文章方法。
子润先生
2021/06/24
4980
推荐阅读
相关推荐
WP_Query 的所有参数
更多 >
LV.2
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档