最近想用pytorch识别本地的图片库,于是打算用一个最基础的网络,没有用到Conv
由cv2读取本地图形方式为:
array1 = cv2.imread("./result/1.jpg", cv2.IMREAD_GRAYSCALE)
x = torch.tensor(array1).float()
第一行选取图形目录,cv2.IMREAD_GRAYSCALE为转为灰度
第二行为转为tensor形式,可以进入计算
基础的网络如下:
myNet = nn.Sequential(
nn.Linear(2,10),
nn.ReLU(),
nn.Linear(10,1),
nn.Sigmoid()
)
optimzer = torch.optim.SGD(myNet.parameters(), lr=0.05)
loss_func = nn.MSELoss()
for epoch in range(5000):
out = myNet(x)
loss = loss_func(out, y)
optimzer.zero_grad()
loss.backward()
optimzer.step()
print(out.data)
这里还需要一个y来表示样本的种类。
目前困惑:
x = np.mat('0 0;'
'0 1;'
'1 0;'
'1 1')
x = torch.tensor(x).float()
y = np.mat('1;'
'0;'
'0;'
'1')
y = torch.tensor(y).float()
这里有个x,y的例子,但是x是每一行一个y对应,对于一个非向量的矩阵块,我还不明白怎么进行分类。
初步想法:
pytorch的torchvision.datasets.ImageFolder可以直接用文件夹进行类别的区分,然后使用torch.utils.data.DataLoader转为<class 'torch.utils.data.dataloader.DataLoader'>的种类直接放到网络,现在还不清楚如何调整网络中的参数来使用这个
继续分析mnist的代码来学习
用一个简单的CNN基础网络来将Dataloader的数据放进去测试
如果有大佬看到希望能给予小白指导orz