- 环境配置和安装
- 解决pip安装时速度慢的问题
- 安装anaconda
- 安装pytorch
- 进入python环境
- pycharm安装
- 配置anaconda
- jupyter
- python学习
- python学习两法宝
- pycharm
- 数据
- 下载数据集
- jupyvter使用
- pycharm
- image的使用
- 实例
- 数据集相加
- 创建label
- tensorboard
- SummaryWriter
- add_scalar
- add_image
- transforms
- transforms.ToTensor图片格式转换tensor类型
- 安装 opencv-python
- torch.Tensor展示add_image
- 补充__call__
- 简单使用
- torchvision的数据集使用
- 将数据转化tensor类型
- dataloader的使用
- SummaryWriter查看数据集
软件使用anacoder和pycharm 环境配置和安装 解决pip安装时速度慢的问题 安装anaconda
安装anaconda
conda create -n pytorch python=3.6
激活版本
conda activate pytorch
查看工具包
pytorch官网
安装指令
conda install pytorch torchvision cudatoolkit=9.2 -c pytorch -c defaults -c numba/1abe1/dev
根据官网安装合适版本
CommandNotFoundError: No command ‘conda creat’. Did you mean ‘conda create’?
检测本地gpu是否可被pytorch使用
>>> import torch >>> torch.cuda.is_available()pycharm安装
参考
配置anaconda
错误Cannot run program “D:…venvScriptspython.exe“ (in directory ): CreateProcess error=2
进入Anaconda Prompt终端
conda activate pytorch
jupyter notebook
dir()函数,能让我们知道工具箱以及工具箱中的分隔区有什么东西。
help()函数,能让我们知道每个工具是如何使用的,工具的使用方法。
数据集链接
数据集链接
from torch.utils.data import Dataset
from PIL import Image
import os
class MyData(Dataset):
def __init__(self,root_dir,label_dir):
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)
def __getitem__(self, 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)
ants_dataset=MyData("dataset/train","ants")
数据集相加
上面的基础上
ants_dataset=MyData("dataset/train","ants")
bees_dataset=MyData("dataset/train","bees")
train_dataset=ants_dataset+bees_dataset
创建label
import os
root_dir = "dataset/train"
target_dir = "ants_image"
img_path = os.listdir(os.path.join(root_dir,target_dir))
label=target_dir.split("_")[0]
out_dir = "ants_label"
for i in img_path:
file_name = i.split( "_jpg ")[0]
with open(os.path.join(root_dir,out_dir,"{}.txt".format(file_name)),'w') as f:
f.write(label)
tensorboard
Tensorboard原本是Google TensorFlow的可视化工具,可以用于记录训练数据、评估数据、网络结构、图像等,并且可以在web上展示,对于观察神经网络的过程非常有帮助。
安装
pip install tensorboardSummaryWriter add_scalar
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter("logs")
for i in range(100):
writer.add_scalar("y=2x",2*i,i)# 依次是tag,y,x
writer.close()
AttributeError:module ‘distutils‘ has no attribute ‘version
add_imagefrom torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer=SummaryWriter("logs")
image_path='dataset/train/bees_image/17209602_fe5a5a746f.jpg'
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
writer.add_image("test",img_array,3,dataformats='HWC')# 标记,图片,步长,格式
for i in range(100):
writer.add_scalar("y=2x",2*i,i)# 依次是tag,y,x
writer.close()
transforms
transforms.ToTensor图片格式转换tensor类型
from torchvision import transforms from PIL import Image img_path="dataset/train/ants_image/7759525_1363d24e88.jpg" img=Image.open(img_path) print(img,"n") tensor_trans=transforms.ToTensor() tensor_img=tensor_trans(img) print(tensor_img)安装 opencv-python
pip --default-timeout=300 install opencv-python -i https://pypi.douban.com/simple
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out
镜像
from torchvision import transforms
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
img_path="dataset/train/ants_image/7759525_1363d24e88.jpg"
img=Image.open(img_path)
writer=SummaryWriter("logs")
tensor_trans=transforms.ToTensor()
tensor_img=tensor_trans(img)
writer.add_image("Tensor_img",tensor_img)
writer.close()
补充__call__
class person:
def __call__(self,name):
print( " __call__"+" Hello " + name)
def hello(self,name):
print( "hello"+ name )
person = person( )
person("zhangsan")
person.hello("lisi")
简单使用
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
writer=SummaryWriter("logs")
img=Image.open("dataset/train/ants_image/5650366_e22b7e1065.jpg")
print(img)
# 1.ToTensor
trans_totensor=transforms.ToTensor()
img_tensor=trans_totensor(img)
writer.add_image("ToTensor",img_tensor)
# 2.Normalize归一化
print(img_tensor[0][0][0])
# output = (input - mean) / std
# mean:各通道的均值
# std:各通道的标准差 rgb三种
trans_norm=transforms.Normalize([2,6,5],[3,2,1])
img_norm=trans_norm(img_tensor)
writer.add_image("Normalize",img_norm,2)
print(img_norm[0][0][0])
#3.resize
print(img.size)
trans_resize=transforms.Resize((512,512))
#img PIL->resize->img_resize PIL
img_resize=trans_resize(img)
# img_resize PIL ->totensor->img_resize tensor
img_resize=trans_totensor(img_resize)
writer.add_image("Resize",img_resize,0)
print(img_resize)
#4. compose resize-2
trans_resize_2=transforms.Resize(256)
#PIL->PIL->tensor
trans_compose=transforms.Compose([trans_resize_2,trans_totensor])
img_resize_2=trans_compose(img)
writer.add_image("Resize",img_resize_2,1)
#5.随即裁剪
trans_random=transforms.RandomCrop((100,200))
trans_compose_2=transforms.Compose([trans_random,trans_totensor])
for i in range(10):
writer.add_image("RandomCrop",trans_compose_2(img),i)
writer.close()
torchvision的数据集使用
数据集链接
import torchvision #下载数据集 train_set=torchvision.datasets.CIFAR10(root="./data_set_train",train=True,download=True) test_set=torchvision.datasets.CIFAR10(root="./data_set_test",train=False,download=True) # 数据集的某一个类别 print(train_set[0]) # //数据集中的类别名称属性 print(train_set.classes) #返回图片和目标值 img,target=train_set[0] print(img) print(target) print(train_set.classes[target]) img.show()将数据转化tensor类型
import torchvision
dataset_tansform=torchvision.transforms.Compose([
torchvision.transforms.ToTensor()
])
train_set=torchvision.datasets.CIFAR10(root="./data_set_train",train=True,transform=dataset_tansform,download=True)
test_set=torchvision.datasets.CIFAR10(root="./data_set_test",train=False,transform=dataset_tansform,download=True)
print(test_set[0])
import torchvision
from torch.utils.tensorboard import SummaryWriter
# /类型转换
dataset_tansform=torchvision.transforms.Compose([
torchvision.transforms.ToTensor()
])
train_set=torchvision.datasets.CIFAR10(root="./data_set_train",train=True,transform=dataset_tansform,download=True)
test_set=torchvision.datasets.CIFAR10(root="./data_set_test",train=False,transform=dataset_tansform,download=True)
#类型转换结果查看
print(test_set[0])
writer=SummaryWriter("p10")
for i in range(10):
img,target=test_set[i]
writer.add_image("test_set",img,i)
writer.close()
dataloader的使用
import torchvision
from torch.utils.data import DataLoader
# 准备的数据集
test_data=torchvision.datasets.CIFAR10("./data_set_test",train=False,transform=torchvision.transforms.ToTensor())
# 测试数据集中第一张图片和target
test_loader=DataLoader(dataset=test_data,batch_size=4,shuffle=True,num_workers=0,drop_last=False)
img,target= test_data[0]
print(img.shape)
print(target)
for data in test_loader:
imggs,targets=data
print(imggs.shape)
print(targets)
SummaryWriter查看数据集
import torchvision
from torch.utils.data import DataLoader
# 准备的数据集
from torch.utils.tensorboard import SummaryWriter
test_data=torchvision.datasets.CIFAR10("./data_set_test",train=False,transform=torchvision.transforms.ToTensor())
# 测试数据集中第一张图片和target,参数:数据集,每份数量,是否洗牌,0,是否要最后余数
test_loader=DataLoader(dataset=test_data,batch_size=4,shuffle=True,num_workers=0,drop_last=False)
img,target= test_data[0]
print(img.shape)
print(target)
writer=SummaryWriter("dataloader")
step=0
for data in test_loader:
imgs,targets=data
print(imgs.shape)
print(targets)
writer.add_images("test_data",imgs,step)
step+=1
writer.close()
下一篇



