0%

在测试模型是需要用model.eval()使模型变为测试模式,
主要是针对dropout和batch normalization在训练时和测试时不一样的情况

其实这么看来,加不加都可以,一般还是加上。

只需将node文件夹复制/移动到其他位置就可以了。
比如我讲node文件夹从Downloads文件夹移动到~主目录下,并删除了文件夹名字中的版本号,复制的话可以正常运行,但是会重新生成hello world文章,可以通过将这个文章转换成草稿解决。
移动的话,需要在~/.bashrc中重新export一下/path/node/bin
然后source ~/.bashrc使之生效

阅读全文 »

用vim编辑hexo文章的时候,tags:后面必须空一格才能正常生成hexo文章。

作用于当前终端

1
export CLASS_PATH=./***/lib:/***/lib

作用于当前用户

1
2
3
vim ~/.bashrc

export CLASS_PATH=./***/lib:/***/lib
阅读全文 »

一个基本的线性回归模型

1
2
3
4
5
6
7
8
9
10
class LinearRegression(nn.Module):
def __init__(self):
super(LinearRegression,self).__init__()
self.linear = nn.Linear(1,1)#一个输入一个输出,此外隐藏一个偏差,y=ax+b

def forward(self,x):
out = self.linear(x)
return out

model = LinearRegression()

至此一个最简单的pytorch模型就定义完了。

带入:

1
from torch.utils.data import DataLoader

该类的基本参数:
1
class torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, num_workers=0, collate_fn=<function default_collate>, pin_memory=False, drop_last=False)

数据加载器。组合数据集和采样器,并在数据集上提供单进程或多进程迭代器。

阅读全文 »

导入:

1
from torchvision.datasets import ImageFolder

常用的参数有:
1
ImageFolder(root="root folder path", [transform, target_transform])

方括号是可选参数
通常使用transform,target_transform是对标签进行变换
1
2
3
4
from torchvision import transforms

transform=transforms.Compose([transforms.Resize(224),transforms.ToTensor(),transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])
metadata=ImageFolder(root="/home/h/models/公司项目/4.手掌手相识别/左右手数据", transform=transform)

它有三个成员变量:
1
2
3
.classes - 用一个list保存 类名
.class_to_idx - 类名对应的 索引
.imgs - 保存(img-path, class) tuple的list

效果分别如下:
1
2
3
4
5
6
7
8
9
10
11
['右手', '左手']


{'右手': 0, '左手': 1}


[('/home/h/models/公司项目/4.手掌手相识别/左右手数据/右手/palm_03PqxLsHfb.png', 0),
('/home/h/models/公司项目/4.手掌手相识别/左右手数据/右手/palm_07K5FrWykv.png', 0),
('/home/h/models/公司项目/4.手掌手相识别/左右手数据/右手/palm_08qhgOx7tF.png', 0),
('/home/h/models/公司项目/4.手掌手相识别/左右手数据/右手/palm_09FOfDraXb.png', 0),
('/home/h/models/公司项目/4.手掌手相识别/左右手数据/右手/palm_09wPmeWrE2.png', 0),

直接打印metadata可以看到大致信息:
1
2
3
4
5
6
7
8
9
Dataset ImageFolder
Number of datapoints: 5858
Root Location: /home/h/models/公司项目/4.手掌手相识别/左右手数据
Transforms (if any): Compose(
Resize(size=224, interpolation=PIL.Image.BILINEAR)
ToTensor()
Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
)
Target Transforms (if any): None

阅读全文 »

宽度模型拥有强大的记忆能力。
深度模型具有很强的泛化能力。

可以把模型分成两部分,一部分作为另一部分的输入之一,从而使模型具有两者的优点。

可以在加载模型后,直接修改最后一层的结构。

加载模型并查看网络结构

1
2
3
from torchvision import models
model=models.resnet18(pretrained=True)
model
阅读全文 »