最近从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函数。