日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

PyTorch之LeNet-5:利用PyTorch实现最经典的LeNet-5卷积神经网络对手写数字图片识别CNN

發布時間:2025/3/21 卷积神经网络 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch之LeNet-5:利用PyTorch实现最经典的LeNet-5卷积神经网络对手写数字图片识别CNN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PyTorch之LeNet-5:利用PyTorch實現最經典的LeNet-5卷積神經網絡對手寫數字圖片識別CNN

?

?

?

目錄

訓練過程

代碼設計


?

?

?

?

訓練過程

?

?

代碼設計

#PyTorch:利用PyTorch實現最經典的LeNet卷積神經網絡對手寫數字進行識別CNN——Jason niu import torch import torch.nn as nn import torch.optim as optimclass LeNet(nn.Module):def __init__(self):super(LeNet,self).__init__()#Conv1 和 Conv2:卷積層,每個層輸出在卷積核(小尺寸的權重張量)和同樣尺寸輸入區域之間的點積;self.conv1 = nn.Conv2d(1,10,kernel_size=5)self.conv2 = nn.Conv2d(10,20,kernel_size=5)self.conv2_drop = nn.Dropout2d()self.fc1 = nn.Linear(320,50)self.fc2 = nn.Linear(50,10)def forward(self,x):x = F.relu(F.max_pool2d(self.conv1(x),2)) #使用 max 運算執行特定區域的下采樣(通常 2x2 像素);x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)),2))x = x.view(-1, 320)x = F.relu(self.fc1(x)) #修正線性單元函數,使用逐元素的激活函數 max(0,x);x = F.dropout(x, training=self.training) #Dropout2D隨機將輸入張量的所有通道設為零。當特征圖具備強相關時,dropout2D 提升特征圖之間的獨立性;x = self.fc2(x)return F.log_softmax(x, dim=1) #將 Log(Softmax(x)) 函數應用到 n 維輸入張量,以使輸出在 0 到 1 之間。#創建 LeNet 類后,創建對象并移至 GPU model = LeNet()criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(),lr = 0.005, momentum = 0.9) #要訓練該模型,我們需要使用帶動量的 SGD,學習率為 0.01,momentum 為 0.5。import os from torch.autograd import Variable import torch.nn.functional as Fcuda_gpu = torch.cuda.is_available() def train(model, epoch, criterion, optimizer, data_loader):model.train()for batch_idx, (data, target) in enumerate(data_loader):if cuda_gpu:data, target = data.cuda(), target.cuda()model.cuda()data, target = Variable(data), Variable(target)output = model(data)optimizer.zero_grad()loss = criterion(output, target)loss.backward()optimizer.step()if (batch_idx+1) % 400 == 0:print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, (batch_idx+1) * len(data), len(data_loader.dataset),100. * (batch_idx+1) / len(data_loader), loss.data[0]))from torchvision import datasets, transformsbatch_num_size = 64 train_loader = torch.utils.data.DataLoader(datasets.MNIST('data',train=True, download=True, transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))])), batch_size=batch_num_size, shuffle=True)test_loader = torch.utils.data.DataLoader(datasets.MNIST('data',train=False, transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))])), batch_size=batch_num_size, shuffle=True)def test(model, epoch, criterion, data_loader):model.eval()test_loss = 0correct = 0for data, target in data_loader:if cuda_gpu:data, target = data.cuda(), target.cuda()model.cuda()data, target = Variable(data), Variable(target)output = model(data)test_loss += criterion(output, target).data[0]pred = output.data.max(1)[1] # get the index of the max log-probabilitycorrect += pred.eq(target.data).cpu().sum()test_loss /= len(data_loader) # loss function already averages over batch sizeacc = correct / len(data_loader.dataset)print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(test_loss, correct, len(data_loader.dataset), 100. * acc))return (acc, test_loss)epochs = 5 #僅僅需要 5 個 epoch(一個 epoch 意味著你使用整個訓練數據集來更新訓練模型的權重),就可以訓練出一個相當準確的 LeNet 模型。 #這段代碼檢查可以確定文件中是否已有預訓練好的模型。有則加載;無則訓練一個并保存至磁盤。 if (os.path.isfile('pretrained/MNIST_net.t7')):print ('Loading model')model.load_state_dict(torch.load('pretrained/MNIST_net.t7', map_location=lambda storage, loc: storage))acc, loss = test(model, 1, criterion, test_loader) else:print ('Training model') #打印出該模型的信息。打印函數顯示所有層(如 Dropout 被實現為一個單獨的層)及其名稱和參數。for epoch in range(1, epochs + 1):train(model, epoch, criterion, optimizer, train_loader)acc, loss = test(model, 1, criterion, test_loader)torch.save(model.state_dict(), 'pretrained/MNIST_net.t7') print (type(t.cpu().data))#以使用 .cpu() 方法將張量移至 CPU(或確保它在那里)。 #或當 GPU 可用時(torch.cuda. 可用),使用 .cuda() 方法將張量移至 GPU。你可以看到張量是否在 GPU 上,其類型為 torch.cuda.FloatTensor。 #如果張量在 CPU 上,則其類型為 torch.FloatTensor。 if torch.cuda.is_available():print ("Cuda is available")print (type(t.cuda().data)) else:print ("Cuda is NOT available")if torch.cuda.is_available():try:print(t.data.numpy())except RuntimeError as e:"you can't transform a GPU tensor to a numpy nd array, you have to copy your weight tendor to cpu and then get the numpy array" print(type(t.cpu().data.numpy())) print(t.cpu().data.numpy().shape) print(t.cpu().data.numpy())data = model.conv1.weight.cpu().data.numpy() print (data.shape) print (data[:, 0].shape)kernel_num = data.shape[0]fig, axes = plt.subplots(ncols=kernel_num, figsize=(2*kernel_num, 2))for col in range(kernel_num):axes[col].imshow(data[col, 0, :, :], cmap=plt.cm.gray) plt.show()

相關文章
LeNet-5 is our latest convolutional network designed for handwritten and machine-printed character recognition.

總結

以上是生活随笔為你收集整理的PyTorch之LeNet-5:利用PyTorch实现最经典的LeNet-5卷积神经网络对手写数字图片识别CNN的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情无遮挡 | 日本免费小视频 | 国产成人麻豆精品午夜在线 | 国产在线网 | 亚洲欧美999 | 情侣av | 三级免费网站 | 黄色录像网址 | 欧美人与动牲交xxxxbbbb | 天天做天天看 | 亚洲精品偷拍视频 | 深夜福利视频在线观看 | 美女被叉叉的影院 | 欧美自偷自拍 | 日韩在线电影一区二区 | 亚洲精品9 | 国产真实乱 | 色播在线| 日韩电影观看 | 综合色av | 九草在线视频 | 婷婷天堂 | 日韩中文字幕在线 | 在线观看www. | 欧美国产中文 | 国产精品夜夜夜爽阿娇 | 欧美亚洲日本 | 折磨小男生性器羞耻的故事 | 精品成在人线av无码免费看 | 日日骚av | 国产视频入口 | 国产3p视频| 福利一区二区视频 | 日韩欧美国产中文字幕 | 国产精品成av人在线视午夜片 | 亚洲无打码 | 日韩一区在线免费观看 | 久久精品国产露脸对白 | 性xxxxbbbb| 欧美成人午夜77777 | 久久精品久久久久久久 | 一区二区伦理 | 91色噜噜 | 欧美最顶级a∨艳星 | 国产毛片精品国产一区二区三区 | 男女无遮挡免费视频 | 日日夜精品 | av在线www | 少妇精品一区二区三区 | 中文有码av | 日韩成人高清视频在线观看 | 中文字幕日韩三级片 | 欧美男女交配 | 午夜成人免费电影 | 91欧美在线 | 精品亚洲乱码一区二区 | 搡老岳熟女国产熟妇 | 91精品国产一区二区在线观看 | 成人福利在线免费观看 | 黄色一级大片在线免费看国产一 | 国产第一精品 | 超碰在线网址 | 一区二区三区四区久久 | 91免费看| aa视频在线观看 | 毛片在线网址 | 欧美精品黑人猛交高潮 | 在线观看免费高清 | 国产美女在线精品 | 波多野一区二区 | 亚洲精品水蜜桃 | 国产精品国产三级国产a | 日韩一区二区免费看 | 国产精品va在线观看无码 | 欧美色影院 | 波多野结衣在线网址 | www.四虎.com | 五月婷婷久久综合 | yw在线观看 | 天堂在线免费观看视频 | 国内久久久久 | 粉嫩av一区| 日韩天堂 | 久久精品男人 | 久久作爱 | 免费成人蒂法网站 | 欧美日韩制服 | 伊人网在线 | 三级网站国产 | 日韩成人高清视频 | 国产 欧美 日本 | 欧美日韩中文字幕在线 | 超碰97人 | 琪琪色在线观看 | 香蕉久久夜色精品升级完成 | 亚洲成av人在线观看 | 日韩毛片在线播放 | 欧美成欧美va| 制服丝袜在线视频 |