IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Pytorch入门级函数使用 -> 正文阅读

[人工智能]Pytorch入门级函数使用

tesorboard

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

img = Image.open("test.jpg")
#第二个参数是类型是img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data
img_array = np.array(img)  # 输入类型有要求,可以转换为ndarry格式
print(type(img_array))
print(img_array.shape)
writer.add_image("test",img_array,2,dataformats="HWC")   #参数  标题 指定格式图片 步骤  数据格式(默认是CHW格式,因此这里需要修改)

writer.add_image()
for i in range(100):
    writer.add_scalar("y=3x",3*i,i)  #参数分别为标题,y轴数值,x轴步长

#打开tensorboard事件文件
#在命令行输入tensorboard --logdir=logs  ctrl+c是quit
#修改端口 tensorboard --logdir=logs --port=6007
#在创建多个事件的时候,如果不改标题,那么下次会在上次事件的基础上进行创建,可能会出现奇怪的图像,因此建议想创建新的事件的时候就删掉以前的事件,或者在空白的子文件下创建。

writer.close()

transform

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
#将图片转换为tensor类型是为了方便神经网络的训练
img = Image.open("test.jpg")
#transform的使用
#transform.ToTensor是系统提供给我们的一个打造工具的模板   这里trans是我们制造的工具
trans = transforms.ToTensor()
#利用我们自己打造的trans向其中送入图片,就得到了我们想要的tensor数据
img_tensor = trans(img)
writer = SummaryWriter("logs2")
#这里可以直接送入img_tensor  不需要再用numpy转换  因为已经是tensor数据了
writer.add_image("tensor_img",img_tensor)

#Normalize
print(img_tensor[0][0][0])
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) #这里得到值大小为(原像素-第一个参数)/第二个参数
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize",img_norm)

#Compose()  参数为两个transform格式数据组成的列表  目的是将几个变换组合在一起
#上面writer.add_image的输入为tensor数据类型,因此需要对resize后的img做totensor处理  而是同compose可以将两个任务组合一起实现
trans_resize2 = transforms.Resize(512)
trans_compose = transforms.Compose([trans_resize2,trans])
img_resize2 = trans_compose(img)
writer.add_image("Resize",img_resize2,1)

#RandomCrop(object): Crop the given PIL Image at a random location.
trans_random = transforms.RandomCrop(512)
trans_compose_2 = transforms.Compose([trans_random,trans])
for i in range(10):
    img_crop = trans_compose_2(img)
    writer.add_image("RandomCrop",img_crop,i)


writer.close()

? 这里只是举了几个例子,总结在调用这些函数时,我们要关注输入和输出,看官方文档,关注方法需要的参数,不知道返回值的时候可以利用print(type())或者debug

torch.nn.functional

import torch.nn.functional as F
import torch

input = torch.tensor([[1,2,3,4],
                      [2,4,6,8],
                      [3,5,7,9],
                      [5,4,6,3]])
kerner = torch.tensor([[1,0,1],
                       [2,0,2],
                       [1,1,1]])
input = torch.reshape(input,(1,1,4,4))
kerner = torch.reshape(kerner,(1,1,3,3))
output = F.conv2d(input,kerner,stride=1,padding=1)
print(output)

convolution

from torch import nn
import torchvision
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset,batch_size=64)

class Conv(nn.Module):
    def __init__(self):
        super(Conv,self).__init__()
        self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)

    def forward(self,x):
        x = self.conv1(x)
        return x

myConv = Conv()
import torch.utils.tensorboard
writer = SummaryWriter("logs")

step = 0
for data in dataloader:
    imgs, targets = data
    output = myConv(imgs)
    output = torch.reshape(output,(-1,3,30,30))
    writer.add_images("input",imgs,step)
    writer.add_images("output",output,step)
    step = step+1

maxpooling

from torch import nn
from torch.nn import MaxPool2d
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset,batch_size=64)

class maxpool(nn.Module):
    def __init__(self):
        super(maxpool,self).__init__()
        self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)

    def forward(self,input):
        output = self.maxpool1(input)
        return output

writer = SummaryWriter("logs_maxpool")
myMaxpool = maxpool()
step = 0

for data in dataloader:
    imgs, targets = data
    writer.add_images("input_maxpool",imgs,step)
    output = myMaxpool(imgs)
    writer.add_images("output_maxpool",output,step)
    step = step+1

非线性激活

#非线性激活sigmoid函数示例
import torchvision
from torch.nn import Sigmoid
from torch.utils.data import DataLoader
from torch import nn
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset,batch_size=64)

class sigmoid(nn.Module):
    def __init__(self):
        super(sigmod,self).__init__()
        sigmod1 = Sigmoid()

    def forward(self,input):
        output = sigmoid(input)
        return output

mySigmoid = Sigmoid()
writer = SummaryWriter("logs_sigmoid")
step = 0
for data in dataloader:
    imgs, targets = data
    writer.add_images("input_sigmoid",imgs,global_step=step)
    output = mySigmoid(imgs)
    writer.add_images("output_sigmoid",output,step)
    step = step+1

线性层

class Liner(nn.Module):
    def __init__(self):
        super(Liner, self).__init__()
        self.linear1 = Linear(196608,10)

    def forward(self,input):
        output = self.linear1(input)
        return output

myLinear = Liner()
for data in dataloader:
    imgs, targets = data
    print(imgs.shape)
    output = torch.flatten(imgs)  #展平成一行
    #output = torch.reshape(imgs,(1,1,1,-1))
    print(output.shape)
    output = myLinear(output)
    print(output.shape)

Sequential

#Sequential
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Linear, Sequential
import torch
from torch.nn.modules.flatten import Flatten
from torch.utils.tensorboard import SummaryWriter


class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        # self.conv1 = Conv2d(3,32,5,padding=2)
        # self.maxpool1 = MaxPool2d(2)
        # self.conv2 = Conv2d(32,32,5,padding=2)
        # self.maxpool2 = MaxPool2d(2)
        # self.conv3 = Conv2d(32,64,5,padding=2)
        # self.maxpool3 = MaxPool2d(2)
        # self.flatten = Flatten()
        # self.linear1 = Linear(1024,64)
        # self.linear2 = Linear(64,10)

        self.model1 = Sequential(
            Conv2d(3,32,5,padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10)
        )

    def forward(self,x):
        # x = self.conv1(x)
        # x = self.maxpool1(x)
        # x = self.conv2(x)
        # x = self.maxpool2(x)
        # x = self.conv3(x)
        # x = self.maxpool3(x)
        # x = self.flatten(x)
        # x = self.linear1(x)
        # x = self.linear2(x)

        x = self.model1(x)
        return x

tudui = Tudui()
input = torch.ones((64,3,32,32))
output = tudui(input)

#将神经网络处理过程可视化
writer = SummaryWriter("logs_seq")
writer.add_graph(tudui,input)
writer.close()
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:35:32  更:2021-11-12 19:38:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:36:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码