想要在tensorboard上显示图片,要把图片给transforms.ToTensor()成tensor类型。
当你测试时候,记得在测试文件里的网络和图片都变成.cuda(),或者都.cpu()
self.model = nn.Sequential(
nn.Conv2d(3, 32, 5, 1, 2),
nn.MaxPool2d(2),
省略。。。
)
sequential 用于网络结构的容器
train_data = torchvision.datasets.CIFAR10(
root='CIFAR10',train=True,transform = transforms.Compose([
transforms.CenterCrop(10),
transforms.PILToTensor(),
transforms.ConvertImageDtype(torch.float)]),
download=True)
compose用于对图形或tensor进行一些列操作的容器
尺寸不对时:
在网络中全部注释掉,一行一行的展开,然后运行进行查看尺寸。
PIL :PIL.Jpeg(Png不固定,看你是啥)ImageFile类型 Image.open(img_path)
tensor :tensor类型 transforms.ToTensor(img)
narrays :numpy.ndarry类型 cv2.imread(img_path) 或者 np.array(img)
import torch
from torchvision import transforms
from PIL import Image
train_data = torchvision.datasets.CIFAR10(root='CIFAR10',train=True,transform=torchvision.transforms.ToTensor(),download=True)
#此时已经变成了tensor量
print(train_data[0][0]) #一大堆的三维tensor(3,32,32)
# train_data[0][0].show() #tensor量是不可以直接用于展示成图片
bbb = transforms.ToPILImage() #先经过transforms中的ToPILmage函数 将tensor变成图片
bbb(train_data[0][0]).show()
关于Softmax:
m = nn.Softmax(dim=1)
input = torch.randn(2,3)
print(input)
output = m(input)
print(output)
输出为:
input tensor([[-2.1922, 1.5888, -0.8482],
[ 0.8750, 1.2335, 2.2822]])
output tensor([[0.0205, 0.9007, 0.0787],
[0.1535, 0.2197, 0.6269]])
作用:将值取为0-1之间,小的更小,大的更大。(dim=1上)求和为1。