操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    作者| Lai

    來源| Data

    編輯|代碼醫生團隊

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

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

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

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

    創建卷積神經網絡

    展示如何在中構建卷積神經網絡。使用MNIST - 數據集訓練了它,其中有60,000個28x28分辨率的黑白圖像的衣服。

    卷積神經網絡有沒有正則化_卷積神經網絡算法_正則化網絡

    在這里查看的完整代碼。

    %20CNN.py

    第1部分:導入,初始化和數據集

    首先,導入,將使用的深度學習庫,以及,它提供數據集和圖像轉換。然后明確導入torch.和torch.以方便使用。還導入了torch.nn(的神經網絡庫)卷積神經網絡有沒有正則化,torch.nn.(包括非線性函數,如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

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

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

    是時候檢索數據集了!加載MNIST-的訓練集和測試集,并設置參數以將數據集轉換為張量(.())。還通過設置平均值和標準差來對它們進行標準化(.((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)

    在加載數據集時,應該看到以下消息:

    卷積神經網絡有沒有正則化_正則化網絡_卷積神經網絡算法

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

    #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)

    以下將用于訓練網絡的數據集中的一些圖像:

    第2部分:構建卷積神經網絡

    使用nn.類初始化神經網絡,nn.類是所有分層神經網絡模塊的基類:

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

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

    卷積神經網絡的層次

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

    卷積神經網絡算法_正則化網絡_卷積神經網絡有沒有正則化

    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)

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

    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部分:創建實例

    現在已經為卷積神經網絡創建了一個類,需要創建一個它的實例(創建了一個類來確定它的層和前向傳播,但還沒有實際創建一個真正的神經網絡) 。

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

    還使用交叉熵損失來確定神經網絡輸出的標簽。

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

    最后初始化線性回歸/ 函數。

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

    第4部分:培訓模型

    正則化網絡_卷積神經網絡有沒有正則化_卷積神經網絡算法

    創建網絡和實例后,準備使用數據集進行訓練!遍歷數據集,對于每個小批量,執行前向傳播,計算交叉熵損失,執行后向傳播并使用漸變來更新參數。

    #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個小批量,神經網絡的損失和準確性。最終輸出應如下所示:

    第5部分:測試模型

    模型經過訓練,剩下要做的就是測試它!在測試數據集上運行神經網絡,將輸出與正確的標簽進行比較,并確定整體準確性。

    #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))

    結果

    結果如下!

    神經網絡應該達到88%-90%的準確度,與MNIST-數據集上的2層CNN的91.6%基準相比,這是非常好的。請注意,MNIST-數據集比原始的MNIST數字數據集更難訓練。如果想要獲得更高的準確度,將不得不添加更多層,更多地預處理數據以更好地標準化它,并增加時期數。

    卷積神經網絡有沒有正則化_卷積神經網絡算法_正則化網絡

    以下是神經網絡的一些預測:

    由卷積神經網絡做出的預測

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

    卷積神經網絡圖形

    關于圖書

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

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

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

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