1. dir()
    它可以展示一个package中所有的方法和类,以列的方式展示出来。

  2. help()
    它可以具体展示某个方法或者类的使用说明,也可以使用方法??后面接两个问号的方式,实现提示功能

  3. jupyter,python console,python文件的区别和使用
    python文件:他会将所有内容都重新编译运行,比较耗时,适合完整的大型项目
    jupyter,python console:都可以将每一个python语句拆分成任意块去单独执行。执行速度快。不会重复运行
    但是python console如果出了错误。会很影响阅读体验。因此常用来做测试
    而jupyter有着文字和代码共存的特性适合用来做笔记和学习

  4. TensorBoard的使用
    他可以将数据转化成图表类型,更加的可观,明了。
    例1:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from torch.utils.tensorboard import SummaryWriter
    # from read_image import img_array
    writer = SummaryWriter("logs") # 他会生成这个文件夹,并在close后写入数据

    # print(type(img_array))
    # print(img_array.shape)
    # writer.add_image("test",img_array,1,dataformats='HWC')
    # y = x
    for i in range(100):
    writer.add_scalar("y=2x",2*i,i)

    writer.close()

    然后在cmd窗口打开tensorboard,使用该命令tensorboard --logdir=logs --port=6006,他默认端口为6006

    同样的,可以添加图片,即将上述代码的注释去除。
    并带上这些读取图片的代码:

    1
    2
    3
    4
    5
    6
    7
    from PIL import Image
    import numpy as np
    image_path = "data/train/ants-image/0013035.jpg"

    img = Image.open(image_path)

    img_array = np.array(img)

    因为tensorboard读取图片只能使用固定的两种格式的数据,因此我们采用numpy格式的图片读入

  5. transforms
    他的本质就是一个强大的工具类,我们通过具体化这些工具类,并生成自己需要的工具,然后使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # tenser数据类型:通过transforms.ToTenser去实现
    # tenser数据类型:就是一个包装了反向神经网络所需要的参数的数据类型
    img_path = "data/train/ants-image/0013035.jpg"
    img = Image.open(img_path)
    # print(img)
    tensor_trains = transforms.ToTensor()

    tensor_img = tensor_trains(img)

    print(tensor_img)

常用的transforms

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from PIL import Image
from torchvision import transforms

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")
img = Image.open("images/15.jpg")
print(img)

# ToTensor的使用
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("ToTensor", img_tensor)

# Normalize
print(img_tensor[0][0][0])
trans_morm = transforms.Normalize([0.2, 1.3, 2.1], [3, 2, 1])
img_norm = trans_morm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize", img_norm, 7)

# 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)

# Compose -resize -2
trans_resize_2 = transforms.Resize(512)
trans_compose = transforms.Compose([trans_resize_2, trans_totensor])
img_resize_2 = trans_compose(img)
writer.add_image("Resize", img_resize_2, 1)

# RandomCrop
trans_random = transforms.RandomCrop((512, 800))
trans_compose_2 = transforms.Compose([trans_random, trans_totensor])
for i in range(10):
img_crop = trans_compose_2(img)
writer.add_image("RandomCropHW", img_crop, i)
writer.close()
  1. dataset的使用例子
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    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(root_dir,label_dir)
    self.img_path = os.listdir(self.path)

    def __getitem__(self, index):
    img_name = self.img_path[index]
    img_item_path = os.path.join(self.path,img_name)
    img = Image.open(img_item_path)
    label = self.label_dir
    return img,label

    def __len__(self):
    return len(self.img_path)

    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

dataset 和 dataloader

dataset就是一个数据集。而dataloader是用来从dataset中取数据的一个工具

模型的保存和读取

保存

读取