栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

无标题白板_无标题的笔记本?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无标题白板_无标题的笔记本?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言读取图像--转化为灰度图--转化为numpy数组可视化图片figsize指定figure的宽和高输出结果为416 416卷积时需要将图像转化为四维表示[batch,channel,h,w]进行卷积操作

设置卷积时使用的核,第一个核采用边缘检测核,第二个核采用随机数核 因为上面写了输入通道数是1 输出通道是2 ,所以会输出两个矩阵下面设置的是data[0]也就是代表第一个是边缘检测,第二个是随机数 要是data[1]就是第二个是边缘但是不能是data[2] 因为一共就两个通道,data[2]代表第三个了 要是把输出通道设置为3 就不会报错了对灰度图像进行卷积操作图片已经转换成4维了,可以直接卷积图片大小是416*416 但是输出的是410*412 卷积之后变小了对卷积后的输出进行维度压缩这样矩阵就变成了3维矩阵了。【【【有三个 本来上面是1,2,416,412有4个[ 现在移除维度为1的变成3个了可视化卷积后的图像subplot(m,n,p)生成 m行n列的 m*n个子图,当前激活第p个子图。激活第一个子图,展示的就是卷积层压缩后为0的第一个子图用的是边缘检测# 激活第二个子图,展示的就是卷积层压缩后为1的第二个子图用的是随机数检测


前言

记录一下看了pytorch深度学习入门与实战后得一些收获。刚开始学习pytorch,一些理解可能不是很正确,欢迎大家交流讨论。

提示:以下是本篇文章正文内容,下面案例可供参考

import numpy as np
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
from PIL import Image
import os
os.environ[‘KMP_DUPLICATE_LIB_OK’]=‘TRUE’

读取图像–转化为灰度图–转化为numpy数组

my=Image.open(“data/flower.png”)
my=np.array(my.convert(“L”),dtype=np.float32) # .convert(“L”)为灰度图像,像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。

可视化图片 figsize指定figure的宽和高

plt.figure(figsize=(8,8))
plt.imshow(my, cmap=plt.cm.gray)
plt.axis(“off”)
plt.show()
imh, imw=my.shape

输出结果为416 416

print(imh, imw)

卷积时需要将图像转化为四维表示[batch,channel,h,w]

myimgray_t=torch.as_tensor(my.reshape((1,1,imh,imw)))
print(myimgray_t.shape)
kersize=5 # 定义边缘检测卷积核
ker=torch.ones(kersize,kersize,dtype=torch.float32)*-1
print(ker)
ker[2,2]=24
print(ker)
ker=ker.reshape((1,1,kersize,kersize)) # 转化为4维矩阵
print(ker)

进行卷积操作

conv2d=nn.Conv2d(1,2,(kersize,kersize),bias=False)
print(conv2d)

设置卷积时使用的核,第一个核采用边缘检测核,第二个核采用随机数核 因为上面写了输入通道数是1 输出通道是2 ,所以会输出两个矩阵 下面设置的是data[0]也就是代表第一个是边缘检测,第二个是随机数 要是data[1]就是第二个是边缘 但是不能是data[2] 因为一共就两个通道,data[2]代表第三个了 要是把输出通道设置为3 就不会报错了

conv2d.weight.data[0]=ker
print(conv2d.weight.data)
print("--------------------------")

对灰度图像进行卷积操作 图片已经转换成4维了,可以直接卷积 图片大小是416416 但是输出的是410412 卷积之后变小了

imconv2dout=conv2d(myimgray_t)
print(imconv2dout)
print(imconv2dout.shape)

对卷积后的输出进行维度压缩

imconv2dout_im=imconv2dout.data.squeeze() # 移除维度为1的维度

这样矩阵就变成了3维矩阵了。【【【有三个 本来上面是1,2,416,412有4个[ 现在移除维度为1的变成3个了

print(imconv2dout_im)
print(“卷积后尺寸:”,imconv2dout_im.shape)

可视化卷积后的图像

plt.figure(figsize=(12,6))

subplot(m,n,p)生成 m行n列的 m*n个子图,当前激活第p个子图。

plt.subplot(1,2,1)

激活第一个子图,展示的就是卷积层压缩后为0的 第一个子图用的是边缘检测

plt.imshow(imconv2dout_im[0],cmap=plt.cm.gray)
plt.axis(“off”)
plt.subplot(1,2,2)

# 激活第二个子图,展示的就是卷积层压缩后为1的 第二个子图用的是随机数检测

plt.imshow(imconv2dout_im[1],cmap=plt.cm.gray)
plt.axis(“off”)
plt.show()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783483.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号