国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

b2c商城網(wǎng)站網(wǎng)站搜什么關(guān)鍵詞

b2c商城網(wǎng)站,網(wǎng)站搜什么關(guān)鍵詞,米拓cms可以做企業(yè)網(wǎng)站嗎,百度站長工具登錄方式基于WIN10的64位系統(tǒng)演示 一、寫在前面 上期我們基于TensorFlow環(huán)境介紹了多分類建模的誤判病例分析。 本期以健康組、肺結(jié)核組、COVID-19組、細(xì)菌性(病毒性)肺炎組為數(shù)據(jù)集,基于Pytorch環(huán)境,構(gòu)建SqueezeNet多分類模型&#xf…

基于WIN10的64位系統(tǒng)演示

一、寫在前面

上期我們基于TensorFlow環(huán)境介紹了多分類建模的誤判病例分析。

本期以健康組、肺結(jié)核組、COVID-19組、細(xì)菌性(病毒性)肺炎組為數(shù)據(jù)集,基于Pytorch環(huán)境,構(gòu)建SqueezeNet多分類模型,分析誤判病例,因為它建模速度快。

同樣,基于GPT-4輔助編程。

二、誤判病例分析實戰(zhàn)

使用胸片的數(shù)據(jù)集:肺結(jié)核病人和健康人的胸片的識別。其中,健康人900張,肺結(jié)核病人700張,COVID-19病人549張、細(xì)菌性(病毒性)肺炎組900張,分別存入單獨的文件夾中。

直接分享代碼:

######################################導(dǎo)入包###################################
import copy
import torch
import torchvision
import torchvision.transforms as transforms
from torchvision import models
from torch.utils.data import DataLoader
from torch import optim, nn
from torch.optim import lr_scheduler
import os
import matplotlib.pyplot as plt
import warnings
import numpy as npwarnings.filterwarnings("ignore")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 設(shè)置GPU
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")################################導(dǎo)入數(shù)據(jù)集#####################################
from torchvision import datasets, transforms
from torch.nn.functional import softmax
from PIL import Image
import pandas as pd
import torch.nn as nn
import timm
from torch.optim import lr_scheduler# 自定義的數(shù)據(jù)集類
class ImageFolderWithPaths(datasets.ImageFolder):def __getitem__(self, index):original_tuple = super(ImageFolderWithPaths, self).__getitem__(index)path = self.imgs[index][0]tuple_with_path = (original_tuple + (path,))return tuple_with_path# 數(shù)據(jù)集路徑
data_dir = "./MTB-1"# 圖像的大小
img_height = 256
img_width = 256# 數(shù)據(jù)預(yù)處理
data_transforms = {'train': transforms.Compose([transforms.RandomResizedCrop(img_height),transforms.RandomHorizontalFlip(),transforms.RandomVerticalFlip(),transforms.RandomRotation(0.2),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])]),'val': transforms.Compose([transforms.Resize((img_height, img_width)),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])]),
}# 加載數(shù)據(jù)集
full_dataset = ImageFolderWithPaths(data_dir, transform=data_transforms['train'])# 獲取數(shù)據(jù)集的大小
full_size = len(full_dataset)
train_size = int(0.8 * full_size)  # 假設(shè)訓(xùn)練集占70%
val_size = full_size - train_size  # 驗證集的大小# 隨機(jī)分割數(shù)據(jù)集
torch.manual_seed(0)  # 設(shè)置隨機(jī)種子以確保結(jié)果可重復(fù)
train_dataset, val_dataset = torch.utils.data.random_split(full_dataset, [train_size, val_size])# 應(yīng)用數(shù)據(jù)增強(qiáng)到訓(xùn)練集和驗證集
train_dataset.dataset.transform = data_transforms['train']
val_dataset.dataset.transform = data_transforms['val']# 創(chuàng)建數(shù)據(jù)加載器
batch_size = 8
train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=0)
val_dataloader = torch.utils.data.DataLoader(val_dataset, batch_size=batch_size, shuffle=True, num_workers=0)dataloaders = {'train': train_dataloader, 'val': val_dataloader}
dataset_sizes = {'train': len(train_dataset), 'val': len(val_dataset)}
class_names = full_dataset.classes# 獲取數(shù)據(jù)集的類別
class_names = full_dataset.classes# 保存預(yù)測結(jié)果的列表
results = []###############################定義SqueezeNet模型################################
# 定義SqueezeNet模型
model = models.squeezenet1_1(pretrained=True)  # 這里以SqueezeNet 1.1版本為例
num_ftrs = model.classifier[1].in_channels# 根據(jù)分類任務(wù)修改最后一層
# 這里我們改變模型的輸出層為4,因為我們做的是四分類
model.classifier[1] = nn.Conv2d(num_ftrs, 4, kernel_size=(1,1))# 修改模型最后的輸出層為我們需要的類別數(shù)
model.num_classes = 4model = model.to(device)# 打印模型摘要
print(model)#############################編譯模型#########################################
# 定義損失函數(shù)
criterion = nn.CrossEntropyLoss()# 定義優(yōu)化器
optimizer = torch.optim.Adam(model.parameters())# 定義學(xué)習(xí)率調(diào)度器
exp_lr_scheduler = lr_scheduler.StepLR(optimizer, step_size=7, gamma=0.1)# 開始訓(xùn)練模型
num_epochs = 20# 初始化記錄器
train_loss_history = []
train_acc_history = []
val_loss_history = []
val_acc_history = []for epoch in range(num_epochs):print('Epoch {}/{}'.format(epoch, num_epochs - 1))print('-' * 10)# 每個epoch都有一個訓(xùn)練和驗證階段for phase in ['train', 'val']:if phase == 'train':model.train()  # 設(shè)置模型為訓(xùn)練模式else:model.eval()   # 設(shè)置模型為評估模式running_loss = 0.0running_corrects = 0# 遍歷數(shù)據(jù)for inputs, labels, paths in dataloaders[phase]:inputs = inputs.to(device)labels = labels.to(device)# 零參數(shù)梯度optimizer.zero_grad()# 前向with torch.set_grad_enabled(phase == 'train'):outputs = model(inputs)_, preds = torch.max(outputs, 1)loss = criterion(outputs, labels)# 只在訓(xùn)練模式下進(jìn)行反向和優(yōu)化if phase == 'train':loss.backward()optimizer.step()# 統(tǒng)計running_loss += loss.item() * inputs.size(0)running_corrects += torch.sum(preds == labels.data)epoch_loss = running_loss / dataset_sizes[phase]epoch_acc = (running_corrects.double() / dataset_sizes[phase]).item()# 記錄每個epoch的loss和accuracyif phase == 'train':train_loss_history.append(epoch_loss)train_acc_history.append(epoch_acc)else:val_loss_history.append(epoch_loss)val_acc_history.append(epoch_acc)print('{} Loss: {:.4f} Acc: {:.4f}'.format(phase, epoch_loss, epoch_acc))print()# 保存模型
torch.save(model.state_dict(), 'SqueezeNet_model-m-s.pth')# 加載最佳模型權(quán)重
#model.load_state_dict(best_model_wts)
#torch.save(model, 'shufflenet_best_model.pth')
#print("The trained model has been saved.")
###########################誤判病例分析#################################
import os
import pandas as pd
from collections import defaultdict# 判定組別的字典
group_dict = {("COVID-19", "Normal"): "B",("COVID-19", "Pneumonia"): "C",("COVID-19", "Tuberculosis"): "D",("Normal", "COVID-19"): "E",("Normal", "Pneumonia"): "F",("Normal", "Tuberculosis"): "G",("Pneumonia", "COVID-19"): "H",("Pneumonia", "Normal"): "I",("Pneumonia", "Tuberculosis"): "J",("Tuberculosis", "COVID-19"): "K",("Tuberculosis", "Normal"): "L",("Tuberculosis", "Pneumonia"): "M",
}# 創(chuàng)建一個字典來保存所有的圖片信息
image_predictions = {}# 循環(huán)遍歷所有數(shù)據(jù)集(訓(xùn)練集和驗證集)
for phase in ['train', 'val']:# 設(shè)置模型的狀態(tài)model.eval()# 遍歷數(shù)據(jù)for inputs, labels, paths in dataloaders[phase]:inputs = inputs.to(device)labels = labels.to(device)# 計算模型的輸出with torch.no_grad():outputs = model(inputs)_, preds = torch.max(outputs, 1)# 循環(huán)遍歷每一個批次的結(jié)果for path, pred in zip(paths, preds):# 提取圖片的類別actual_class = os.path.split(os.path.dirname(path))[-1] # 提取圖片的名稱image_name = os.path.basename(path)# 獲取預(yù)測的類別predicted_class = class_names[pred]# 判斷預(yù)測的分組類型if actual_class == predicted_class:group_type = 'A'elif (actual_class, predicted_class) in group_dict:group_type = group_dict[(actual_class, predicted_class)]else:group_type = 'Other'  # 如果沒有匹配的條件,可以歸類為其他# 保存到字典中image_predictions[image_name] = [phase, actual_class, predicted_class, group_type]# 將字典轉(zhuǎn)換為DataFrame
df = pd.DataFrame.from_dict(image_predictions, orient='index', columns=['Dataset Type', 'Actual Class', 'Predicted Class', 'Group Type'])# 保存到CSV文件中
df.to_csv('result-m-s.csv')

四、改寫過程

先說策略:首先,先把二分類的誤判病例分析代碼改成四分類的;其次,用咒語讓GPT-4幫我們續(xù)寫代碼已達(dá)到誤判病例分析。

提供咒語如下:

①改寫{代碼1},改變成4分類的建模。代碼1為:{XXX};

在{代碼1}的基礎(chǔ)上改寫代碼,達(dá)到下面要求:

(1)首先,提取出所有圖片的“原始圖片的名稱”、“屬于訓(xùn)練集還是驗證集”、“預(yù)測為分組類型”;文件的路勁格式為:例如,“MTB-1\Normal\XXX.png”屬于Normal,“MTB-1\COVID-19\XXX.jpg”屬于COVID-19,“MTB-1\Pneumonia\XXX.jpeg”屬于Pneumonia,“MTB-1\Tuberculosis\XXX.png”屬于Tuberculosis;

(2)其次,根據(jù)樣本預(yù)測結(jié)果,把樣本分為以下若干組:(a)預(yù)測正確的圖片,全部判定為A組;(b)本來就是COVID-19的圖片,預(yù)測為Normal,判定為B組;(c)本來就是COVID-19的圖片,預(yù)測為Pneumonia,判定為C組;(d)本來就是COVID-19的圖片,預(yù)測為Tuberculosis,判定為D組;(e)本來就是Normal的圖片,預(yù)測為COVID-19,判定為E組;(f)本來就是Normal的圖片,預(yù)測為Pneumonia,判定為F組;(g)本來就是Normal的圖片,預(yù)測為Tuberculosis,判定為G組;(h)本來就是Pneumonia的圖片,預(yù)測為COVID-19,判定為H組;(i)本來就是Pneumonia的圖片,預(yù)測為Normal,判定為I組;(j)本來就是Pneumonia的圖片,預(yù)測為Tuberculosis,判定為J組;(k)本來就是Tuberculosis的圖片,預(yù)測為COVID-19,判定為H組;(l)本來就是Tuberculosis的圖片,預(yù)測為Normal,判定為I組;(m)本來就是Tuberculosis的圖片,預(yù)測為Pneumonia,判定為J組;

(3)居于以上計算的結(jié)果,生成一個名為result-m.csv表格文件。列名分別為:“原始圖片的名稱”、“屬于訓(xùn)練集還是驗證集”、“預(yù)測為分組類型”、“判定的組別”。其中,“原始圖片的名稱”為所有圖片的圖片名稱;“屬于訓(xùn)練集還是驗證集”為這個圖片屬于訓(xùn)練集還是驗證集;“預(yù)測為分組類型”為模型預(yù)測該樣本是哪一個分組;“判定的組別”為根據(jù)步驟(2)判定的組別,從A到J一共十組選擇一個。

(4)需要把所有的圖片都進(jìn)行上面操作,注意是所有圖片,而不只是一個批次的圖片。

代碼1為:{XXX}

③還需要根據(jù)報錯做一些調(diào)整即可,自行調(diào)整。

最后,看看結(jié)果:

模型只運(yùn)行了2次,所以效果很差哈,全部是預(yù)測成了COVID-19。

四、數(shù)據(jù)

鏈接:https://pan.baidu.com/s/1rqu15KAUxjNBaWYfEmPwgQ?pwd=xfyn

提取碼:xfyn

五、結(jié)語

深度學(xué)習(xí)圖像分類的教程到此結(jié)束,洋洋灑灑29篇,涉及到的算法和技巧也夠發(fā)一篇SCI了。當(dāng)然,圖像識別還有圖像分割和目標(biāo)識別兩塊內(nèi)容,就放到最后再說了。下一趴,我們來介紹時間序列建模!!!

http://m.aloenet.com.cn/news/40260.html

相關(guān)文章:

  • 黃岐做網(wǎng)站網(wǎng)站建設(shè)技術(shù)托管
  • 宜昌網(wǎng)站推廣關(guān)鍵詞優(yōu)化怎么弄
  • 優(yōu)化企業(yè)網(wǎng)站標(biāo)題河北百度競價優(yōu)化
  • 備案網(wǎng)站制作北京百度關(guān)鍵詞推廣
  • 企業(yè)注冊在哪個網(wǎng)站申請網(wǎng)絡(luò)營銷的發(fā)展現(xiàn)狀及趨勢
  • 合肥公司網(wǎng)站建設(shè)搜索引擎優(yōu)化排名seo
  • 在上面網(wǎng)站上可以做統(tǒng)計圖今日深圳新聞最新消息
  • 長沙專業(yè)網(wǎng)站設(shè)計平臺高質(zhì)量軟文
  • 音樂外鏈網(wǎng)站網(wǎng)站推廣引流最快方法
  • 設(shè)計素材網(wǎng)站0百度認(rèn)證怎么認(rèn)證
  • 旅行社門店做網(wǎng)站嘛營銷文案
  • 推廣網(wǎng)站排名優(yōu)化seo教程福州seo優(yōu)化
  • 盤縣做會計兼職的網(wǎng)站愛站網(wǎng)關(guān)鍵詞密度
  • 做網(wǎng)站有效果嗎揚(yáng)州整站seo
  • 江西響應(yīng)式網(wǎng)頁建設(shè)沙洋縣seo優(yōu)化排名價格
  • 教程網(wǎng)站搭建優(yōu)化網(wǎng)站快速排名軟件
  • 天津百度優(yōu)化武漢seo認(rèn)可搜點網(wǎng)絡(luò)
  • 公司做網(wǎng)站賣東西要什么證太原網(wǎng)站制作優(yōu)化seo公司
  • 網(wǎng)頁設(shè)計實訓(xùn)報告工作內(nèi)容和步驟長春網(wǎng)站建設(shè)方案優(yōu)化
  • 自己做的網(wǎng)站怎么賺錢嗎百度推廣助手客戶端
  • 大豐網(wǎng)站建設(shè)新東方教育培訓(xùn)機(jī)構(gòu)官網(wǎng)
  • 新余做網(wǎng)站公司培訓(xùn)班報名
  • 網(wǎng)站開發(fā)所需技能北京seo優(yōu)化廠家
  • 公司網(wǎng)站建設(shè)做分錄谷歌seo顧問
  • php網(wǎng)站的部署愛站網(wǎng)站長seo綜合查詢工具
  • 機(jī)械公司網(wǎng)站建設(shè)中國法律服務(wù)網(wǎng)app最新下載
  • wordpress 圖片 分離seo研究所
  • wordpress3.1.3漏洞企業(yè)網(wǎng)站seo案例
  • 牛牛襄陽網(wǎng)站建設(shè)大數(shù)據(jù)營銷系統(tǒng)軟件
  • 商城小程序報價廊坊關(guān)鍵詞優(yōu)化報價