国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【人工智能概論】 構(gòu)建神經(jīng)網(wǎng)絡(luò)——以用InceptionNet解決MNIST任務(wù)為例

這篇具有很好參考價(jià)值的文章主要介紹了【人工智能概論】 構(gòu)建神經(jīng)網(wǎng)絡(luò)——以用InceptionNet解決MNIST任務(wù)為例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【人工智能概論】 構(gòu)建神經(jīng)網(wǎng)絡(luò)——以用InceptionNet解決MNIST任務(wù)為例


一. 整體思路

  • 兩條原則,四個(gè)步驟。

1.1 兩條原則

  1. 從宏觀到微觀
  2. 把握數(shù)據(jù)形狀

1.2 四個(gè)步驟

  1. 準(zhǔn)備數(shù)據(jù)
  2. 構(gòu)建模型
  3. 確定優(yōu)化策略
  4. 完善訓(xùn)練與測(cè)試代碼

二. 舉例——用InceptionNet解決MNIST任務(wù)

2.1 模型簡(jiǎn)介

  • InceptionNet的設(shè)計(jì)思路是通過(guò)增加網(wǎng)絡(luò)寬度來(lái)獲得更好的模型性能。
  • 其核心在于基本單元Inception結(jié)構(gòu)塊,如下圖:
    【人工智能概論】 構(gòu)建神經(jīng)網(wǎng)絡(luò)——以用InceptionNet解決MNIST任務(wù)為例
  • 通過(guò)縱向堆疊Inception塊構(gòu)建完整網(wǎng)絡(luò)。

2.2 MNIST任務(wù)

  • MNIST是入門級(jí)的機(jī)器學(xué)習(xí)任務(wù);
  • 它是一個(gè)手寫數(shù)字識(shí)別的數(shù)據(jù)集。

2.3 完整的程序

# 調(diào)包
import torch
import torch.nn as nn
import torch.nn.functional as F
from torchvision import transforms
from torchvision import datasets
from torch.utils.data import DataLoader
import torch.optim as optim


"""數(shù)據(jù)準(zhǔn)備"""
batch_size = 64

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,),(0.3081,))
])

train_dataset = datasets.MNIST(root='./mnist/',train=True,download=True,transform=transform)
train_loader = DataLoader(train_dataset,shuffle=True,batch_size=batch_size)
test_dataset = datasets.MNIST(root='./mnist/',train=False,download=True,transform=transform)
test_loader = DataLoader(test_dataset,shuffle=False,batch_size=batch_size)


"""構(gòu)建模型"""
# 需要指定輸入的通道數(shù)

class Inceptiona(nn.Module): 
    def __init__(self,in_channels):
        super(Inceptiona,self).__init__()
        
        self.branch1_1 = nn.Conv2d(in_channels , 16 , kernel_size= 1)
        
        self.branch5_5_1 =nn.Conv2d(in_channels, 16, kernel_size= 1)
        self.branch5_5_2 =nn.Conv2d(16,24,kernel_size=5,padding=2)
        
        self.branch3_3_1 = nn.Conv2d(in_channels, 16,kernel_size=1)
        self.branch3_3_2 = nn.Conv2d(16,24,kernel_size=3,padding=1)
        self.branch3_3_3 = nn.Conv2d(24,24,kernel_size=3,padding=1)
        
        self.branch_pooling = nn.Conv2d(in_channels,24,kernel_size=1)
        
    def forward(self,x):
        x1 = self.branch1_1(x)
        
        x2 = self.branch5_5_1(x)
        x2 = self.branch5_5_2(x2)
        
        x3 = self.branch3_3_1(x)
        x3 = self.branch3_3_2(x3)
        x3 = self.branch3_3_3(x3)
        
        x4 = F.avg_pool2d(x,kernel_size=3,stride = 1, padding=1)
        x4 = self.branch_pooling(x4)
        
        outputs = [x1,x2,x3,x4]
        return torch.cat(outputs,dim=1)      
    
# 構(gòu)建完整的網(wǎng)絡(luò)
class Net(nn.Module):
    def __init__(self):
        super(Net,self).__init__()
        self.conv1 = nn.Conv2d(1,10,kernel_size=5)
        self.conv2 = nn.Conv2d(88,20,kernel_size=5)
        
        self.incep1 = Inceptiona(in_channels=10)
        self.incep2 = Inceptiona(in_channels=20)
        
        self.mp = nn.MaxPool2d(2)
        self.fc = nn.Linear(1408,10)
        
    def forward(self,x):
        batch_size = x.size(0)
        x = F.relu(self.mp(self.conv1(x)))
        x = self.incep1(x)
        x = F.relu(self.mp(self.conv2(x)))
        x = self.incep2(x)
        
        x = x.view(batch_size,-1)
        x = self.fc(x)
        return x


"""確定優(yōu)化策略"""
model = Net()
device = torch.device('cuda:0'if torch.cuda.is_available() else 'cpu')
model.to(device) # 指定設(shè)備

criterion = torch.nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(),lr=0.01,momentum=0.5)



"""完善訓(xùn)練與測(cè)試代碼"""
def train(epoch):
    running_loss = 0.0
    for batch_index, data in enumerate(train_loader,0):
        inputs, target = data
        # 把數(shù)據(jù)和模型送到同一個(gè)設(shè)備上
        inputs, target = inputs.to(device), target.to(device)
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs,target)
        loss.backward()
        optimizer.step()
        
        running_loss += loss.item() 
        # 用loss.item不會(huì)構(gòu)建計(jì)算圖,得到的不是張量,而是標(biāo)量
        if batch_index % 300 == 299:
            # 每三百組計(jì)算一次平均損失
            print('[%d,%5d] loss: %.3f' %(epoch+1,batch_index+1,running_loss/300))
            # 給出的是平均每一輪的損失
            running_loss = 0.0
            
def test():
    correct = 0
    total = 0
    with torch.no_grad(): 
        # 測(cè)試的環(huán)節(jié)不用求梯度
        for data in test_loader:
            images , labels = data
            images , labels = images.to(device),  labels.to(device)
            outputs = model(images)
            _, predicted = torch.max(outputs.data,dim=1)
            total += labels.size(0)
            correct += (predicted == labels).sum().item()
    print('accuracy on test set: %d,%%'%(100*correct/total))
    return 100*correct/total  # 將測(cè)試的準(zhǔn)確率返回

# 執(zhí)行訓(xùn)練
if __name__=='__main__':
    score_best = 0
    for epoch in range(10):
        train(epoch)
        score = test()
        if score > score_best:
            score_best = score
            torch.save(model.state_dict(), "model.pth")

文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-419523.html

到了這里,關(guān)于【人工智能概論】 構(gòu)建神經(jīng)網(wǎng)絡(luò)——以用InceptionNet解決MNIST任務(wù)為例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 人工智能 -- 神經(jīng)網(wǎng)絡(luò)

    人工智能 -- 神經(jīng)網(wǎng)絡(luò)

    什么是人工智能?通俗來(lái)講,就是讓機(jī)器能像人一樣思考。這個(gè)無(wú)需解釋太多,因?yàn)橥ㄟ^(guò)各種科幻電影我們已經(jīng)對(duì)人工智能很熟悉了。大家現(xiàn)在感興趣的應(yīng)該是——如何實(shí)現(xiàn)人工智能? 從1956年夏季首次提出“人工智能”這一術(shù)語(yǔ)開(kāi)始,科學(xué)家們嘗試了各種方法來(lái)實(shí)現(xiàn)它。這

    2024年02月05日
    瀏覽(24)
  • 人工智能-卷積神經(jīng)網(wǎng)絡(luò)

    人工智能-卷積神經(jīng)網(wǎng)絡(luò)

    ? ? ? ? 人和動(dòng)物如何把看到的圖像轉(zhuǎn)化為大腦中的一個(gè)概念? ? ? ? ? 我們知道計(jì)算機(jī)是把圖轉(zhuǎn)換為一大堆數(shù)字,通過(guò)訓(xùn)練可以知道這堆數(shù)字代表什么含義。但通過(guò)前面學(xué)過(guò)神經(jīng)網(wǎng)絡(luò)模型和梯度下降法的方法訓(xùn)練費(fèi)時(shí)費(fèi)力,而且一旦圖片進(jìn)行改變?nèi)缈s放、旋轉(zhuǎn)或其他變換,

    2024年02月16日
    瀏覽(23)
  • 人工智能-線性神經(jīng)網(wǎng)絡(luò)

    線性神經(jīng)網(wǎng)絡(luò) 在介紹深度神經(jīng)網(wǎng)絡(luò)之前,我們需要了解神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基礎(chǔ)知識(shí)。 本章我們將介紹神經(jīng)網(wǎng)絡(luò)的整個(gè)訓(xùn)練過(guò)程, 包括:定義簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)架構(gòu)、數(shù)據(jù)處理、指定損失函數(shù)和如何訓(xùn)練模型。 為了更容易學(xué)習(xí),我們將從經(jīng)典算法———— 線性 神經(jīng)網(wǎng)絡(luò)開(kāi)始,介

    2024年02月06日
    瀏覽(19)
  • 人工智能神經(jīng)網(wǎng)絡(luò)概念股,神經(jīng)網(wǎng)絡(luò)芯片概念股

    人工智能神經(jīng)網(wǎng)絡(luò)概念股,神經(jīng)網(wǎng)絡(luò)芯片概念股

    人工智能包含硬件智能、軟件智能和其他。 硬件智能包括:漢王科技、康力電梯、慈星股份、東方網(wǎng)力、高新興、紫光股份。 軟件智能包括:金自天正、科大訊飛。 其他類包括:中科曙光、京山輕機(jī)。 谷歌人工智能寫作項(xiàng)目:小發(fā)貓 1、蘇州科達(dá):蘇州科達(dá)科技股份有限公

    2024年02月07日
    瀏覽(28)
  • 【復(fù)習(xí)】人工智能 第 8 章 人工神經(jīng)網(wǎng)絡(luò)及其應(yīng)用

    【復(fù)習(xí)】人工智能 第 8 章 人工神經(jīng)網(wǎng)絡(luò)及其應(yīng)用

    因?yàn)橛?jì)算牽扯到導(dǎo)數(shù),所以這章難的部分不會(huì)考太難。 人工神經(jīng)網(wǎng)絡(luò)是對(duì)人腦或生物神經(jīng)網(wǎng)絡(luò)若干基本特性的抽象和模擬。 深度學(xué)習(xí)是神經(jīng)網(wǎng)絡(luò)的發(fā)展。 人工智能曾經(jīng)歷過(guò)很長(zhǎng)一段時(shí)間的停滯不前。 浩瀚的宇宙中,也許只有包含數(shù)千憶顆星球的銀河系的復(fù)雜性能夠與大腦相

    2024年01月19日
    瀏覽(38)
  • 人工智能之卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    人工智能之卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    前言:今天我們重點(diǎn)探討一下卷積神經(jīng)網(wǎng)絡(luò)(CNN)算法。 _ 20世紀(jì)60年代,Hubel和Wiesel在研究貓腦皮層中用于局部敏感和方向選擇的神經(jīng)元時(shí)發(fā)現(xiàn)其獨(dú)特的網(wǎng)絡(luò)結(jié)構(gòu)可以有效地降低反饋神經(jīng)網(wǎng)絡(luò)的復(fù)雜性,繼而提出了卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Networks)。 1980年,K.Fukushima提

    2024年02月20日
    瀏覽(19)
  • 神經(jīng)網(wǎng)絡(luò)與人工智能:未來(lái)的前沿

    人工智能(Artificial Intelligence, AI)是一門研究如何讓機(jī)器具有智能行為的科學(xué)。在過(guò)去的幾十年里,人工智能研究主要集中在規(guī)則-基于的系統(tǒng)、知識(shí)-基于的系統(tǒng)以及黑盒模型。然而,在過(guò)去的幾年里,一種新的人工智能技術(shù)已經(jīng)吸引了廣泛的關(guān)注:神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)是一種模

    2024年02月21日
    瀏覽(95)
  • 【人工智能】— 深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、多卷積核、全連接、池化

    【人工智能】— 深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、多卷積核、全連接、池化

    Pre-training + Fine-tuning Pre-training(預(yù)訓(xùn)練) : 監(jiān)督逐層訓(xùn)練是多隱層網(wǎng)絡(luò)訓(xùn)練的有效手段, 每次訓(xùn)練一層隱層結(jié)點(diǎn), 訓(xùn)練時(shí)將上一層隱層結(jié)點(diǎn)的輸出作為輸入, 而本層隱結(jié)點(diǎn)的輸出作為下一層隱結(jié)點(diǎn)的輸入, 這稱為”預(yù)訓(xùn)練”. Fine-tuning(微調(diào)) : 在預(yù)訓(xùn)練全部完成后, 再對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行

    2024年02月10日
    瀏覽(48)
  • 人工智能:CNN(卷積神經(jīng)網(wǎng)絡(luò))、RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))、DNN(深度神經(jīng)網(wǎng)絡(luò))的知識(shí)梳理

    卷積神經(jīng)網(wǎng)絡(luò)(CNN),也被稱為ConvNets或Convolutional Neural Networks,是一種深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)架構(gòu),主要用于處理和分析具有網(wǎng)格狀結(jié)構(gòu)的數(shù)據(jù),特別是圖像和視頻數(shù)據(jù)。CNN 在計(jì)算機(jī)視覺(jué)任務(wù)中表現(xiàn)出色,因?yàn)樗鼈兡軌蛴行У夭东@和識(shí)別圖像中的特征,具有平移不變性(transla

    2024年02月05日
    瀏覽(41)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包