pytorch学习笔记

0.前置
镜像
  • 清华:https://pypi.tuna.tsinghua.edu.cn/simple
  • 阿里云:http://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/
  • 华中理工大学:http://pypi.hustunique.com/
  • 山东理工大学:http://pypi.sdutlinux.org/
jupyter notebook
两个比较有用的函数工具
  • dir(): 能让我们知道“工具箱”里有什么东西,dir 是 directory 的缩写.
    每个对象都有不同的函数和常量。每个函数和常量都成为一个属性。dir()的作用就是将这个对象中的所有属性显示出来,这些属性以列表的方式储存。

  • help(): 查看帮助,让我们知晓“工具”的使用方法,所查询函数不加()就足以得到一个简明的信息

三种方式比较

在这里插入图片描述

1. 加载数据
2. Tensorboard & Transforms
Tensorboard 测试
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter("log") #写到log里,log为文件名

image_path = "dataset/train/ants/0013035.jpg" #相对路径
img = Image.open(image_path) #这里打开的是PIL.jpg 格式
img = np.array(img) #转成array
writer.add_image("image1", img, 1, dataformats='HWC') #参数可直接查看文档

for i in range(100):
    writer.add_scalar("y = 3x", 3*i, i) #虽然是离散的,但好像会自动拟合

writer.close() #必写!关闭才能从缓存写入events文件(虽然不太懂其中实质)

Tensorboard 显示数据(array, tensor等形式)
在命令行(Pycharm 里可在Terminnal)输入
tensorboard --logdir=文件名 (--port=6007)
port 后面是端口,可以自己设定,默认好像是6006

Transforms 测试
import cv2
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image

image_path = "dataset/train/ants/7759525_1363d24e88.jpg"

img_PIL = Image.open(image_path)

toTensor = transforms.ToTensor()

img_tensor = toTensor(img_PIL)

print(type(img_tensor))

img_array = cv2.imread(image_path)

print(type(img_array))

img_tensor2 = toTensor(img_array)

print(img_tensor2.shape)

writer = SummaryWriter("logs")

writer.add_image("img_tensor", img_tensor2)

writer.close()
3.CIFAR10加载及展示
import torch
import torchvision
from torch.utils.tensorboard import SummaryWriter

dataset_transform = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])
train_set = torchvision.datasets.CIFAR10(root="./CIFAR10", train=True, transform=dataset_transform, download=True)
test_set = torchvision.datasets.CIFAR10(root="./CIFAR10", train=False, transform=dataset_transform, download=True)
# 开始没对dataset 加transform的测试
# print(test_set[0])
# img, target = test_set[0]
#
# print(test_set.classes[target])
# print(type(img))
# #img.show()

writer = SummaryWriter("10p")

for i in range(10):
    img, target = test_set[i]
    writer.add_image(test_set.classes[target], img, i) # 默认是'CHW',恰好PIL.jpg转过来的也是'CxHxW'
    # print(img.size())

writer.close()

关于dataset中的transform,看源代码就知道,是每取出一个就对这个作用一次,不是一次性作用在所有数据上。

4.DataLoader
import torchvision.datasets
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

test_data = torchvision.datasets.CIFAR10("CIFAR10", train=False, transform=torchvision.transforms.ToTensor(), download=True)

dataloader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=False)

writer = SummaryWriter("test_dataloader")

test = 0
for epoch in range(2):  # 跑一个epoch把数据集过一遍
    step = 0
    for data in dataloader:  # dataloader是可迭代对象, 每次取出从中data, Nx(dataset中的数据形式)
        imgs, targets = data
        if test == 0:
            print(imgs.shape)  # 64x3x32x32
            print(targets.shape)  # 64(x1)
            test = 1
        writer.add_images("Epoch:{}".format(epoch), imgs, step)
        step += 1

writer.close()
5. nn.Module
import torch
from torch import nn

class Mynet(nn.Module):
    def __init__(self):
        super().__init__()
    def forward(self, x):
        output = x+1
        return output


mynet = Mynet()
x = torch.tensor(1.0)
print(mynet(x))

to be continue...

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值