pytorch初步学习,一:数据读取

最近从tensorflow转向pytorch,感受到了动态调试的方便,也感受到了一些地方的不同。

所有实验都是基于uint16类型的单通道灰度图片。

一开始尝试用opencv中的cv.imread读取图片,发现会默认读8位数据。。。后来还是改用了skimage读取图片。一个小坑。

在tensorflow中:

利用append得到数组x_test [batchsize,width,hight]

x_test = x_test[:, :, :, np.newaxis]
# 占位符
x=tf.placeholder(tf.float32, shape=[None, w, h, 1], name='x')
# 送入网络tensor维度依次为:batchsize,width,hight,channel

在pytorch中:

arr = np.asarray(img, dtype="float32")
data_x[i, :, :, :] = arr
i += 1
data_y.append(int(item[0]))
data_x = torch.from_numpy(data_x)
data_y = torch.from_numpy(data_y)
dataset = dataf.TensorDataset(data_x, data_y)
loader = dataf.DataLoader(dataset, batch_size=batchsize, shuffle=True)
# 送入网络的tensor维度依次为:batchsize,channel, width,hight

在tensorflow中需要自己写一个minibatch函数控制训练,在pytorch中可以调用dataloader将数据变成torch需要的tensor形式,并且不需要额外写minibatch函数。