亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁 > IT技術(shù) > 其他 > 正文

              32 模型的測試
              2022-05-29 22:43:47

              利用已經(jīng)訓(xùn)練好的模型,給它提供輸入,看輸出

              一、輸入

              1.找到一張圖片

              image

              • 對于圖片要進(jìn)行轉(zhuǎn)換

              png格式是四個通道,除了RGB三通道外,還有一個透明度通道,通過下面的命令,可以適應(yīng)png、jpg各種格式的圖片。

              命令:

              image=image.convert('RGB')
              

              二、實(shí)驗(yàn)對應(yīng)的部分

              1.代碼

              import torch
              import torchvision
              from PIL import Image #直接從PIL中導(dǎo)入Image,不是從PIL.Image
              
              # 1. 圖片的輸入
              from torch import nn
              
              image_path="./images/plane.png"
              image=Image.open(image_path)
              print(image)
              
              # 2. 轉(zhuǎn)換為三通道
              image=image.convert('RGB')
              
              # 3. 將PIL格式轉(zhuǎn)變?yōu)閠ensor數(shù)據(jù)類型
              transform=torchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),
                                                        torchvision.transforms.ToTensor()])
              image=transform(image)
              print(image.shape)
              
              # 4.引入模型結(jié)構(gòu):也可以單獨(dú)建立文件夾,利用import
              class Tudui(nn.Module):
                  def __init__(self):
                      super(Tudui, self).__init__()
                      self.model1=nn.Sequential(
                          nn.Conv2d(3, 32, 5, stride=1,padding=2),  # in_channel 3;out_channel 32;kernel 5;padding需要計(jì)算(一般不會太大)
                          nn.MaxPool2d(2),  # kennel_Size=2
                          nn.Conv2d(32, 32, 5,stride=1,padding=2),
                          nn.MaxPool2d(2),
                          nn.Conv2d(32, 64, 5,stride=1, padding=2),
                          nn.MaxPool2d(2),
                          nn.Flatten(),  # 展平 :可以把后面的刪掉 獲得輸出的大小
                          nn.Linear(64*4*4, 64),  # 看上一層的大小64*4*4=1024 ,可以看到是1024
                          nn.Linear(64, 10)  # 輸入大小 64 輸出大小 10
                      )
                  def forward(self,x):
                          x=self.model1(x)
                          return x
              
              # 5. 使用訓(xùn)練好的模型
              model=torch.load("tudui_49_GPU.pth") #由GPU訓(xùn)練
              # model=torch.load("tudui_49_GPU.pth",map_location=torch.device("cpu")) #由GPU模型映射到CPU模型上,后面的image不加cuda了
              print(model)
              
              # 6. 輸出
              image=torch.reshape(image,(1,3,32,32)) #轉(zhuǎn)變通道數(shù)
              image=image.cuda() #因?yàn)槟P褪荊PU訓(xùn)練的,數(shù)據(jù)集也要用,要是CPU訓(xùn)練的模型,就去掉這個命令
              model.eval()
              with torch.no_grad(): #節(jié)省步驟,提升性能
                output=model(image)
              print(output)
              print(output.argmax(1)) #橫向比較
              

              2.輸出對應(yīng)的類別

              image

              3.運(yùn)行結(jié)果:

              利用colab運(yùn)行50輪后的結(jié)果:測試集準(zhǔn)確度0.65

              預(yù)測狗
              image
              預(yù)測飛機(jī)
              image

              本文摘自 :https://www.cnblogs.com/

              開通會員,享受整站包年服務(wù)立即開通 >