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

深度學(xué)習(xí)——CNN卷積神經(jīng)網(wǎng)絡(luò)

這篇具有很好參考價值的文章主要介紹了深度學(xué)習(xí)——CNN卷積神經(jīng)網(wǎng)絡(luò)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基本概念

概述

卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種深度學(xué)習(xí)中常用于處理具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)模型。它在計算機視覺領(lǐng)域廣泛應(yīng)用于圖像分類、目標(biāo)檢測、圖像生成等任務(wù)。

核心思想

CNN 的核心思想是通過利用局部感知和參數(shù)共享來捕捉輸入數(shù)據(jù)的空間結(jié)構(gòu)信息。相比于傳統(tǒng)的全連接神經(jīng)網(wǎng)絡(luò),CNN 在網(wǎng)絡(luò)結(jié)構(gòu)中引入了卷積層和池化層,從而減少了參數(shù)量,并且能夠更好地處理高維輸入數(shù)據(jù)。

其他概念

輸入層:接收原始圖像或其他形式的輸入數(shù)據(jù)。
卷積層(Convolutional Layer):使用卷積操作提取輸入特征,通過設(shè)置濾波器(卷積核)在輸入數(shù)據(jù)上滑動并執(zhí)行卷積運算。這樣可以學(xué)習(xí)到局部的特征,如邊緣、紋理等。
激活函數(shù)(Activation Function):在每個卷積層后面通常緊跟一個非線性的激活函數(shù),如ReLU(Rectified Linear Unit),以增加網(wǎng)絡(luò)的非線性表達能力。
池化層(Pooling Layer):通過減少特征圖的尺寸來降低模型復(fù)雜性。常用的池化操作是最大池化(Max Pooling),它選取每個池化窗口內(nèi)的最大特征值作為輸出。
全連接層(Fully Connected Layer):將卷積層和池化層的輸出連接到全連接層,使用傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模式進行分類、回歸等任務(wù)。
Dropout 層:在訓(xùn)練過程中以一定概率隨機將部分神經(jīng)元的輸出置為0,以減少模型的過擬合。
Softmax 層:多分類問題中常用的輸出層,在最后一層進行 softmax 操作將輸出轉(zhuǎn)化為類別上的概率分布。

代碼與詳細(xì)注釋

import os

# third-party library
import torch
import torch.nn as nn
import torch.utils.data as Data
import torchvision
import matplotlib.pyplot as plt

# torch.manual_seed(1)    # reproducible

# Hyper Parameters
#  輪次
EPOCH = 1               # train the training data n times, to save time, we just train 1 epoch
# 批大小為50
BATCH_SIZE = 50
# 學(xué)習(xí)率
LR = 0.001
# 是否下載mnist數(shù)據(jù)集
DOWNLOAD_MNIST = False


# 下載minist數(shù)據(jù)集
if not(os.path.exists('./mnist/')) or not os.listdir('./mnist/'):
    # not mnist dir or mnist is empyt dir
    DOWNLOAD_MNIST = True

# torchvision本身就是一個數(shù)據(jù)庫
train_data = torchvision.datasets.MNIST(
    root='./mnist/',
    train=True,                                     # this is training data
    transform=torchvision.transforms.ToTensor(),    # Converts a PIL.Image or numpy.ndarray to
                                                    # torch.FloatTensor of shape (C x H x W) and normalize in the range [0.0, 1.0]
    download=DOWNLOAD_MNIST,
)

# 輸出訓(xùn)練數(shù)據(jù)尺寸
print(train_data.train_data.size())                 # (60000, 28, 28)
# 輸出標(biāo)簽數(shù)據(jù)尺寸
print(train_data.train_labels.size())               # (60000)
# 展示訓(xùn)練數(shù)據(jù)集中的第0個圖片
plt.imshow(train_data.train_data[0].numpy(), cmap='gray')
# 圖片的標(biāo)題是標(biāo)簽
plt.title('%i' % train_data.train_labels[0])
plt.show()

# Data Loader for easy mini-batch return in training, the image batch shape will be (50, 1, 28, 28)
# 批大小為50,shuffle為True意思是設(shè)置為隨機
train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)

# pick 2000 samples to speed up testing
test_data = torchvision.datasets.MNIST(root='./mnist/', train=False)
# 使用unsqueeze增加一個維度
test_x = torch.unsqueeze(test_data.test_data, dim=1).type(torch.FloatTensor)[:2000]/255.   # shape from (2000, 28, 28) to (2000, 1, 28, 28), value in range(0,1)
test_y = test_data.test_labels[:2000]


class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        # 快速搭建神經(jīng)網(wǎng)絡(luò)
        self.conv1 = nn.Sequential(         # input shape (1, 28, 28)
            nn.Conv2d(
                in_channels=1,              # input height
                out_channels=16,            # n_filters
                kernel_size=5,              # filter size
                stride=1,                   # filter movement/step
                padding=2,                  # if want same width and length of this image after Conv2d, padding=(kernel_size-1)/2 if stride=1
            ),                              # output shape (16, 28, 28)
            nn.ReLU(),                      # activation
            nn.MaxPool2d(kernel_size=2),    # choose max value in 2x2 area, output shape (16, 14, 14)
        )
        self.conv2 = nn.Sequential(         # input shape (16, 14, 14)
            nn.Conv2d(16, 32, 5, 1, 2),     # output shape (32, 14, 14)
            nn.ReLU(),                      # activation
            nn.MaxPool2d(2),                # output shape (32, 7, 7)
        )
        self.out = nn.Linear(32 * 7 * 7, 10)   # fully connected layer, output 10 classes

    # 前向傳播
    def forward(self, x):
        # 第一層卷積
        x = self.conv1(x)
        # 第二層卷積
        x = self.conv2(x)
        x = x.view(x.size(0), -1)           # flatten the output of conv2 to (batch_size, 32 * 7 * 7)
        output = self.out(x)
        return output, x    # return x for visualization


cnn = CNN()
print(cnn)  # net architecture

# 選擇優(yōu)化器
optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)   # optimize all cnn parameters
# 選擇損失函數(shù)
loss_func = nn.CrossEntropyLoss()                       # the target label is not one-hotted

# following function (plot_with_labels) is for visualization, can be ignored if not interested
from matplotlib import cm
try: from sklearn.manifold import TSNE; HAS_SK = True
except: HAS_SK = False; print('Please install sklearn for layer visualization')
def plot_with_labels(lowDWeights, labels):
    plt.cla()
    X, Y = lowDWeights[:, 0], lowDWeights[:, 1]
    for x, y, s in zip(X, Y, labels):
        c = cm.rainbow(int(255 * s / 9)); plt.text(x, y, s, backgroundcolor=c, fontsize=9)
    plt.xlim(X.min(), X.max()); plt.ylim(Y.min(), Y.max()); plt.title('Visualize last layer'); plt.show(); plt.pause(0.01)

plt.ion()


# training and testing
for epoch in range(EPOCH):
    for step, (b_x, b_y) in enumerate(train_loader):   # gives batch data, normalize x when iterate train_loader

        output = cnn(b_x)[0]            # cnn output
        loss = loss_func(output, b_y)   # cross entropy loss
        optimizer.zero_grad()           # clear gradients for this training step
        loss.backward()                 # backpropagation, compute gradients
        optimizer.step()                # apply gradients

        if step % 50 == 0:
            test_output, last_layer = cnn(test_x)
            pred_y = torch.max(test_output, 1)[1].data.numpy()
            accuracy = float((pred_y == test_y.data.numpy()).astype(int).sum()) / float(test_y.size(0))
            print('Epoch: ', epoch, '| train loss: %.4f' % loss.data.numpy(), '| test accuracy: %.2f' % accuracy)
            if HAS_SK:
                # Visualization of trained flatten layer (T-SNE)
                tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)
                plot_only = 500
                low_dim_embs = tsne.fit_transform(last_layer.data.numpy()[:plot_only, :])
                labels = test_y.numpy()[:plot_only]
                plot_with_labels(low_dim_embs, labels)
plt.ioff()

# print 10 predictions from test data
test_output, _ = cnn(test_x[:10])
pred_y = torch.max(test_output, 1)[1].data.numpy()
print(pred_y, 'prediction number')
print(test_y[:10].numpy(), 'real number')



運行結(jié)果

深度學(xué)習(xí)——CNN卷積神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí),PyTorch,深度學(xué)習(xí),cnn,人工智能

深度學(xué)習(xí)——CNN卷積神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí),PyTorch,深度學(xué)習(xí),cnn,人工智能文章來源地址http://www.zghlxwxcb.cn/news/detail-555933.html

到了這里,關(guān)于深度學(xué)習(xí)——CNN卷積神經(jīng)網(wǎng)絡(luò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 深度學(xué)習(xí)入門教學(xué)——卷積神經(jīng)網(wǎng)絡(luò)CNN

    深度學(xué)習(xí)入門教學(xué)——卷積神經(jīng)網(wǎng)絡(luò)CNN

    1、應(yīng)用領(lǐng)域 檢測任務(wù) 分類與檢索 超分辨率重構(gòu) 2、卷積網(wǎng)絡(luò)與傳統(tǒng)網(wǎng)咯的區(qū)別 傳統(tǒng)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)都是用來 提取特征 的。 神經(jīng)網(wǎng)絡(luò): 可以將其看作是一個二維的。 卷積神經(jīng)網(wǎng)絡(luò): 可以將其看作是一個三維的。 ?3、整體框架 該層主要是對原始圖像數(shù)據(jù)進行預(yù)處

    2024年02月10日
    瀏覽(25)
  • 【深度學(xué)習(xí)_TensorFlow】卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    【深度學(xué)習(xí)_TensorFlow】卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    這篇文章的行文思路如下: 先根據(jù)視頻了解卷積和卷積神經(jīng)網(wǎng)絡(luò)的整體框架 接著了解卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建過程中的一些重要操作,包括內(nèi)積、填充、池化。 然后介紹卷積層如何實現(xiàn)。 最后用卷積神經(jīng)網(wǎng)絡(luò)的開山之作(LeNet-5)來進行上手練習(xí)。 最近學(xué)習(xí)信號與系統(tǒng)的時候,了

    2024年02月07日
    瀏覽(97)
  • 【深度學(xué)習(xí)】最強算法之:卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    【深度學(xué)習(xí)】最強算法之:卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    小屌絲 :魚哥, 看下這個流程圖,我沒看明白 小魚 :啥流程圖。 小屌絲 :你看,就是這個。 小魚 :嗯,不錯,不錯。 小屌絲 :能不能給我講一講這個? 小魚 :你要了解CNN ? 小屌絲 :CNN 是? 小魚 :…你這… 深度學(xué)習(xí)知道嗎? 小屌絲 :知道啊 小魚 :你都知道深度

    2024年04月09日
    瀏覽(28)
  • 學(xué)習(xí)筆記:深度學(xué)習(xí)(3)——卷積神經(jīng)網(wǎng)絡(luò)(CNN)理論篇

    學(xué)習(xí)筆記:深度學(xué)習(xí)(3)——卷積神經(jīng)網(wǎng)絡(luò)(CNN)理論篇

    學(xué)習(xí)時間:2022.04.10~2022.04.12 CNN(Convolutional Neural Networks, ConvNets, 卷積神經(jīng)網(wǎng)絡(luò))是神經(jīng)網(wǎng)絡(luò)的一種,是理解圖像內(nèi)容的最佳學(xué)習(xí)算法之一,并且在圖像分割、分類、檢測和檢索相關(guān)任務(wù)中表現(xiàn)出色。 3.1.1 什么是CNN? CNN是一種帶有卷積結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò), 卷積結(jié)構(gòu) 可以減少

    2024年02月03日
    瀏覽(31)
  • 深度學(xué)習(xí)入門——卷積神經(jīng)網(wǎng)絡(luò)CNN基本原理+實戰(zhàn)

    深度學(xué)習(xí)入門——卷積神經(jīng)網(wǎng)絡(luò)CNN基本原理+實戰(zhàn)

    ? 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是深度學(xué)習(xí)技術(shù)中最基礎(chǔ)的網(wǎng)絡(luò)結(jié)構(gòu),模擬人腦工作,具備強大的特征學(xué)習(xí)能力。CNN結(jié)構(gòu)主要由兩部分組成:特征提取部分和分類部分color{blue}{特征提取部分和分類部分}特征提取部分和分類部分。特征提取部分網(wǎng)絡(luò)將執(zhí)行一系列

    2024年01月21日
    瀏覽(37)
  • 【深度學(xué)習(xí)】6-4 卷積神經(jīng)網(wǎng)絡(luò) - CNN的實現(xiàn)

    【深度學(xué)習(xí)】6-4 卷積神經(jīng)網(wǎng)絡(luò) - CNN的實現(xiàn)

    CNN的實現(xiàn) 網(wǎng)絡(luò)的構(gòu)成是“Convolution - ReLU - Pooling -Affine - ReLU - Affine - Softmax”,我們將它實現(xiàn)為名為 SimpleConvNet 的類。 首先來看一下 SimpleConvNet的初始化( init ),取下面這些參數(shù)。 input_dim——輸入數(shù)據(jù)的維度:(通道,高,長) conv_param——卷積層的超參數(shù)(字典)。字典的

    2024年02月10日
    瀏覽(29)
  • 深度學(xué)習(xí)實戰(zhàn)——卷積神經(jīng)網(wǎng)絡(luò)/CNN實踐(LeNet、Resnet)

    深度學(xué)習(xí)實戰(zhàn)——卷積神經(jīng)網(wǎng)絡(luò)/CNN實踐(LeNet、Resnet)

    ??? ? 憶如完整項目/代碼詳見github: https://github.com/yiru1225 (轉(zhuǎn)載標(biāo)明出處 勿白嫖 star for projects thanks) 本系列博客重點在深度學(xué)習(xí)相關(guān)實踐(有問題歡迎在評論區(qū)討論指出,或直接私信聯(lián)系我)。 第一章??深度學(xué)習(xí)實戰(zhàn)——不同方式的模型部署(CNN、Yolo)_如何部署cnn_

    2023年04月11日
    瀏覽(26)
  • 文本分類系統(tǒng)Python,基于深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)

    文本分類系統(tǒng)Python,基于深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)

    文本分類系統(tǒng),使用Python作為主要開發(fā)語言,通過TensorFlow搭建CNN卷積神經(jīng)網(wǎng)絡(luò)對十余種不同種類的文本數(shù)據(jù)集進行訓(xùn)練,最后得到一個h5格式的本地模型文件,然后采用Django開發(fā)網(wǎng)頁界面,實現(xiàn)用戶在界面中輸入一段文字,識別其所屬的文本種類。 在我們的日常生活和工作中

    2024年02月08日
    瀏覽(93)
  • 深度學(xué)習(xí):使用卷積神經(jīng)網(wǎng)絡(luò)CNN實現(xiàn)MNIST手寫數(shù)字識別

    深度學(xué)習(xí):使用卷積神經(jīng)網(wǎng)絡(luò)CNN實現(xiàn)MNIST手寫數(shù)字識別

    本項目基于pytorch構(gòu)建了一個深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)包含卷積層、池化層、全連接層,通過此網(wǎng)絡(luò)實現(xiàn)對MINST數(shù)據(jù)集手寫數(shù)字的識別,通過本項目代碼,從原理上理解手寫數(shù)字識別的全過程,包括反向傳播,梯度下降等。 卷積神經(jīng)網(wǎng)絡(luò)是一種多層、前饋型神經(jīng)網(wǎng)絡(luò)。從功能上

    2024年02月13日
    瀏覽(20)
  • 車牌識別系統(tǒng)Python,基于深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)算法

    車牌識別系統(tǒng)Python,基于深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)算法

    車牌識別系統(tǒng),基于Python實現(xiàn),通過TensorFlow搭建CNN卷積神經(jīng)網(wǎng)絡(luò)模型,對車牌數(shù)據(jù)集圖片進行訓(xùn)練最后得到模型,并基于Django框架搭建網(wǎng)頁端平臺,實現(xiàn)用戶在網(wǎng)頁端輸入一張圖片識別其結(jié)果,并基于Pyqt5搭建桌面端可視化界面。 在智能交通和車輛監(jiān)控領(lǐng)域,車牌識別技術(shù)扮

    2024年02月07日
    瀏覽(102)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包