欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    作者| Lai

    來源| Data

    編輯|代碼醫(yī)生團隊

    上邊是服裝的圖片。你能告訴我他們是什么嗎?

    如果猜到運動鞋,連衣裙和靴子,你說得對!這不是太難卷積神經(jīng)網(wǎng)絡(luò)有沒有正則化,是嗎?那是因為人類非常善于檢測模式和分類對象。然而情況并非總是如此,特別是對于機器而言。計算機看不到,它看到了這個:

    圖像作為數(shù)字矩陣存儲在計算機中,其中每個數(shù)字代表像素的顏色。對于黑白圖像,每個像素只有一個數(shù)字代表其黑暗,而對于彩色圖像,RGB通道將有3個數(shù)字(一個用于紅色,一個用于藍色,一個用于綠色)。每個數(shù)字代表該顏色的強度,范圍在0到255之間。

    那么,如果一個圖像是鞋子或T恤,如果它能“看到”的只是數(shù)字,怎么教電腦呢?計算機分析和理解圖像的過程稱為計算機視覺,機器學(xué)習(xí)的子集,卷積神經(jīng)網(wǎng)絡(luò)是任務(wù)的最佳算法。

    創(chuàng)建卷積神經(jīng)網(wǎng)絡(luò)

    展示如何在中構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)。使用MNIST - 數(shù)據(jù)集訓(xùn)練了它,其中有60,000個28x28分辨率的黑白圖像的衣服。

    卷積神經(jīng)網(wǎng)絡(luò)有沒有正則化_卷積神經(jīng)網(wǎng)絡(luò)算法_正則化網(wǎng)絡(luò)

    在這里查看的完整代碼。

    %20CNN.py

    第1部分:導(dǎo)入,初始化和數(shù)據(jù)集

    首先,導(dǎo)入,將使用的深度學(xué)習(xí)庫,以及,它提供數(shù)據(jù)集和圖像轉(zhuǎn)換。然后明確導(dǎo)入torch.和torch.以方便使用。還導(dǎo)入了torch.nn(的神經(jīng)網(wǎng)絡(luò)庫)卷積神經(jīng)網(wǎng)絡(luò)有沒有正則化,torch.nn.(包括非線性函數(shù),如ReLu和)和torch.(反向傳播的計算圖)。

    #Importing?libraries
    import?torch
    import?torchvision
    import?torchvision.transforms?as?transforms
    import?torchvision.datasets?as?datasets
    import?torch.nn?as?nn
    import?torch.nn.functional?as?F
    from?torch.autograd?import?Variable

    然后初始化超參數(shù),其中包括時期數(shù)(訓(xùn)練輪次),種類數(shù)量(有10種:T恤,褲子,套頭衫,連衣裙,外套,涼鞋,襯衫,運動鞋,包和靴子),小批量梯度下降的批量大小,以及梯度下降的學(xué)習(xí)率。

    #Initializing?hyperparameters
    num_epochs?=?8
    num_classes?=?10
    batch_size?=?100
    learning_rate?=?0.001

    是時候檢索數(shù)據(jù)集了!加載MNIST-的訓(xùn)練集和測試集,并設(shè)置參數(shù)以將數(shù)據(jù)集轉(zhuǎn)換為張量(.())。還通過設(shè)置平均值和標(biāo)準(zhǔn)差來對它們進行標(biāo)準(zhǔn)化(.((0.5,0.5,0.5),(0.5,0.5,0.5)))。

    #Loading?dataset
    transform?=?transforms.Compose([transforms.ToTensor(),
    ????????????????????????????????transforms.Normalize((0.5,0.5,0.5),?(0.5,0.5,0.5))])

    train_dataset?=?datasets.FashionMNIST(root='./data',
    ????????????????????????????train=True,
    ????????????????????????????download=True,
    ????????????????????????????transform=transform)

    test_dataset?=?datasets.FashionMNIST(root='./data',
    ???????????????????????????train=False,
    ???????????????????????????download=True,
    ???????????????????????????transform=transform)

    在加載數(shù)據(jù)集時,應(yīng)該看到以下消息:

    卷積神經(jīng)網(wǎng)絡(luò)有沒有正則化_正則化網(wǎng)絡(luò)_卷積神經(jīng)網(wǎng)絡(luò)算法

    此階段的最后一步是將數(shù)據(jù)放入對象(數(shù)據(jù)加載器)以使其更易于訪問。改組訓(xùn)練數(shù)據(jù)集,以便訓(xùn)練中不會有任何偏差。

    #Loading?dataset?into?dataloader
    train_loader?=?torch.utils.data.DataLoader(dataset=train_dataset,
    ???????????????????????????????????????????batch_size=batch_size,
    ???????????????????????????????????????????shuffle=True)

    test_loader?=?torch.utils.data.DataLoader(dataset=test_dataset,
    ??????????????????????????????????????????batch_size=batch_size,
    ??????????????????????????????????????????shuffle=False)

    以下將用于訓(xùn)練網(wǎng)絡(luò)的數(shù)據(jù)集中的一些圖像:

    第2部分:構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)

    使用nn.類初始化神經(jīng)網(wǎng)絡(luò),nn.類是所有分層神經(jīng)網(wǎng)絡(luò)模塊的基類:

    #Defining?the?network??????????
    class?CNNModel(nn.Module):

    卷積網(wǎng)絡(luò)將是兩個卷積層,每個卷積層后面跟著一個非線性函數(shù)(ReLu)和一個最大池化層,最后是一個完全連接的層和用于線性回歸。

    卷積神經(jīng)網(wǎng)絡(luò)的層次

    還在完全連接層之前使用壓差進行正則化,以防止過度擬合。因此可以按如下方式初始化網(wǎng)絡(luò)中的層:

    卷積神經(jīng)網(wǎng)絡(luò)算法_正則化網(wǎng)絡(luò)_卷積神經(jīng)網(wǎng)絡(luò)有沒有正則化

    def?__init__(self):
    ????????super(CNNModel,?self).__init__()

    ????????#Convolution?1
    ????????self.cnn1?=?nn.Conv2d(in_channels=1,?out_channels=16,?kernel_size=5,?stride=1,?padding=2)
    ????????self.relu1?=?nn.ReLU()

    ????????#Max?pool?1
    ????????self.maxpool1?=?nn.MaxPool2d(kernel_size=2)

    ????????#Convolution?2
    ????????self.cnn2?=?nn.Conv2d(in_channels=16,?out_channels=32,?kernel_size=5,?stride=1,?padding=2)
    ????????self.relu2?=?nn.ReLU()

    ????????#Max?pool?2
    ????????self.maxpool2?=?nn.MaxPool2d(kernel_size=2)

    ????????#Dropout?for?regularization
    ????????self.dropout?=?nn.Dropout(p=0.5)

    ????????#Fully?Connected?1
    ????????self.fc1?=?nn.Linear(32*7*7,?10)

    在用于前向傳播的前向功能中,將每個層應(yīng)用于輸入數(shù)據(jù)以及丟失。此外,在正則化之前,將數(shù)據(jù)展平為線性回歸的一維(第一維是批量大小)。

    def?forward(self,?x):
    ????????#Convolution?1
    ????????out?=?self.cnn1(x)
    ????????out?=?self.relu1(out)

    ????????#Max?pool?1
    ????????out?=?self.maxpool1(out)

    ????????#Convolution?2
    ????????out?=?self.cnn2(out)
    ????????out?=?self.relu2(out)

    ????????#Max?pool?2
    ????????out?=?self.maxpool2(out)

    ????????#Resize
    ????????out?=?out.view(out.size(0),?-1)

    ????????#Dropout
    ????????out?=?self.dropout(out)

    ????????#Fully?connected?1
    ????????out?=?self.fc1(out)
    ????????return?out

    第3部分:創(chuàng)建實例

    現(xiàn)在已經(jīng)為卷積神經(jīng)網(wǎng)絡(luò)創(chuàng)建了一個類,需要創(chuàng)建一個它的實例(創(chuàng)建了一個類來確定它的層和前向傳播,但還沒有實際創(chuàng)建一個真正的神經(jīng)網(wǎng)絡(luò)) 。

    #Create?instance?of?model
    model?=?CNNModel()

    還使用交叉熵損失來確定神經(jīng)網(wǎng)絡(luò)輸出的標(biāo)簽。

    #Create?instance?of?loss
    criterion?=?nn.CrossEntropyLoss()

    最后初始化線性回歸/ 函數(shù)。

    #Create?instance?of?optimizer?(Adam)
    optimizer?=?torch.optim.Adam(model.parameters(),?lr=learning_rate)

    第4部分:培訓(xùn)模型

    正則化網(wǎng)絡(luò)_卷積神經(jīng)網(wǎng)絡(luò)有沒有正則化_卷積神經(jīng)網(wǎng)絡(luò)算法

    創(chuàng)建網(wǎng)絡(luò)和實例后,準(zhǔn)備使用數(shù)據(jù)集進行訓(xùn)練!遍歷數(shù)據(jù)集,對于每個小批量,執(zhí)行前向傳播,計算交叉熵損失,執(zhí)行后向傳播并使用漸變來更新參數(shù)。

    #Train?the?model
    iter?=?0
    for?epoch?in?range(num_epochs):
    ????for?i,?(images,?labels)?in?enumerate(train_loader):
    ????????images?=?Variable(images)
    ????????labels?=?Variable(labels)

    ????????#Clear?the?gradients
    ????????optimizer.zero_grad()

    ????????#Forward?propagation
    ????????outputs?=?model(images)??????

    ????????#Calculating?loss?with?softmax?to?obtain?cross?entropy?loss
    ????????loss?=?criterion(outputs,?labels)

    ????????#Backward?propation
    ????????loss.backward()

    ????????#Updating?gradients
    ????????optimizer.step()

    ????????iter?+=?1

    ????????#Total?number?of?labels
    ????????total?=?labels.size(0)

    ????????#Obtaining?predictions?from?max?value
    ????????_,?predicted?=?torch.max(outputs.data,?1)

    ????????#Calculate?the?number?of?correct?answers
    ????????correct?=?(predicted?==?labels).sum().item()

    ????????#Print?loss?and?accuracy
    ????????if?(i?+?1)?%?100?==?0:
    ????????????print('Epoch?[{}/{}],?Step?[{}/{}],?Loss:?{:.4f},?Accuracy:?{:.2f}%'
    ??????????????????.format(epoch?+?1,?num_epochs,?i?+?1,?len(train_loader),?loss.item(),
    ??????????????????????????(correct?/?total)?*?100))

    此外,每100個小批量,神經(jīng)網(wǎng)絡(luò)的損失和準(zhǔn)確性。最終輸出應(yīng)如下所示:

    第5部分:測試模型

    模型經(jīng)過訓(xùn)練,剩下要做的就是測試它!在測試數(shù)據(jù)集上運行神經(jīng)網(wǎng)絡(luò),將輸出與正確的標(biāo)簽進行比較,并確定整體準(zhǔn)確性。

    #Testing?the?model
    with?torch.no_grad():
    ????correct?=?0
    ????total?=?0
    ????for?images,?labels?in?test_loader:
    ????????images?=?Variable(images)
    ????????labels?=?Variable(labels)
    ????????outputs?=?model(images)
    ????????_,?predicted?=?torch.max(outputs.data,?1)
    ????????total?+=?labels.size(0)
    ????????correct?+=?(predicted?==?labels).sum().item()

    ????print('Test?Accuracy?of?the?model?on?the?10000?test?images:?{}?%'.format(100?*?correct?/?total))

    結(jié)果

    結(jié)果如下!

    神經(jīng)網(wǎng)絡(luò)應(yīng)該達到88%-90%的準(zhǔn)確度,與MNIST-數(shù)據(jù)集上的2層CNN的91.6%基準(zhǔn)相比,這是非常好的。請注意,MNIST-數(shù)據(jù)集比原始的MNIST數(shù)字?jǐn)?shù)據(jù)集更難訓(xùn)練。如果想要獲得更高的準(zhǔn)確度,將不得不添加更多層,更多地預(yù)處理數(shù)據(jù)以更好地標(biāo)準(zhǔn)化它,并增加時期數(shù)。

    卷積神經(jīng)網(wǎng)絡(luò)有沒有正則化_卷積神經(jīng)網(wǎng)絡(luò)算法_正則化網(wǎng)絡(luò)

    以下是神經(jīng)網(wǎng)絡(luò)的一些預(yù)測:

    由卷積神經(jīng)網(wǎng)絡(luò)做出的預(yù)測

    如您所見,模型可以正確分類這些衣服!然而,它仍然不完美,因為它錯誤地將最后一個圖像(運動鞋)分類為套頭衫。盡管如此,該模型仍然非常準(zhǔn)確,將努力改進它。

    卷積神經(jīng)網(wǎng)絡(luò)圖形

    關(guān)于圖書

    《深度學(xué)習(xí)之:入門、原理與進階實戰(zhàn)》和《帶我起飛——入門、進階、商業(yè)實戰(zhàn)》兩本圖書是代碼醫(yī)生團隊精心編著的 AI入門與提高的精品圖書。配套資源豐富:配套視頻、QQ讀者群、實例源碼、 配套論壇: 。更多請見:

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有