Pytorch入門例項:mnist分類訓練
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'denny' __time__ = '2017-9-9 9:03' import torch import torchvision from torch.autograd import Variable import torch.utils.data.dataloader as Data train_data = torchvision.datasets.MNIST( './mnist', train=True, transform=torchvision.transforms.ToTensor(), download=True ) test_data= torchvision.datasets.MNIST( './mnist', train=False, transform=torchvision.transforms.ToTensor() ) print("train_data:", train_data.train_data.size()) print("train_labels:", train_data.train_labels.size()) print("test_data:", test_data.test_data.size()) train_loader = Data.DataLoader(dataset=train_data, batch_size=64, shuffle=True) test_loader= Data.DataLoader(dataset=test_data, batch_size=64) class Net(torch.nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = torch.nn.Sequential( torch.nn.Conv2d(1, 32, 3, 1, 1), torch.nn.ReLU(), torch.nn.MaxPool2d(2)) self.conv2= torch.nn.Sequential( torch.nn.Conv2d(32, 64, 3, 1, 1), torch.nn.ReLU(), torch.nn.MaxPool2d(2) ) self.conv3 = torch.nn.Sequential( torch.nn.Conv2d(64, 64, 3, 1, 1), torch.nn.ReLU(), torch.nn.MaxPool2d(2) ) self.dense = torch.nn.Sequential( torch.nn.Linear(64 * 3 * 3, 128), torch.nn.ReLU(), torch.nn.Linear(128, 10) ) def forward(self, x): conv1_out = self.conv1(x) conv2_out = self.conv2(conv1_out) conv3_out = self.conv3(conv2_out) res = conv3_out.view(conv3_out.size(0), -1) out = self.dense(res) return out model = Net() print(model) optimizer = torch.optim.Adam(model.parameters()) loss_func = torch.nn.CrossEntropyLoss() for epoch in range(10): print('epoch {}'.format(epoch + 1)) # training----------------------------- train_loss = 0. train_acc = 0. for batch_x, batch_y in train_loader: batch_x, batch_y = Variable(batch_x), Variable(batch_y) out = model(batch_x) loss = loss_func(out, batch_y) train_loss += loss.data[0] pred = torch.max(out, 1)[1] train_correct = (pred == batch_y).sum() train_acc += train_correct.data[0] optimizer.zero_grad() loss.backward() optimizer.step() print('Train Loss: {:.6f}, Acc: {:.6f}'.format(train_loss / (len( train_data)), train_acc / (len(train_data)))) # evaluation-------------------------------- model.eval() eval_loss = 0. eval_acc = 0. for batch_x, batch_y in test_loader: batch_x, batch_y = Variable(batch_x, volatile=True), Variable(batch_y, volatile=True) out = model(batch_x) loss = loss_func(out, batch_y) eval_loss += loss.data[0] pred = torch.max(out, 1)[1] num_correct = (pred == batch_y).sum() eval_acc += num_correct.data[0] print('Test Loss: {:.6f}, Acc: {:.6f}'.format(eval_loss / (len( test_data)), eval_acc / (len(test_data))))
相關推薦
Pytorch入門例項:mnist分類訓練
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'denny' __time__ = '2017-9-9 9:03' import torch import torchvision from torch.autograd
java:MapReduce原理及入門例項:wordcount
MapReduce原理 MapperTask -> Shuffle(分割槽排序分組) -> ReducerTask MapReduce執行步驟 Map處理任務 讀取檔案每一行,解析成<key、value>,呼叫
tensorflow學習系列六:mnist從訓練儲存模型再到載入模型測試
通過前面幾個系列的學習對tensorflow有了一個漸漸親切的感覺,本文主要是從tensorflow模型訓練與驗證的模型進行實踐一遍,以至於我們能夠通過tensorflow的訓練有一個整體的概念。下面主要是從訓練到儲存模型,然後載入模型進行預測。# -*- codin
多分類例項:鳶尾花分類-基於keras的python學習筆記(五)
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/weixin_44474718/article/details/86420803 資料集可以從UCI機器學習倉庫下載(http://archive.ics.uci.edu/ml/datasets
Android開發入門例項:四則混合運算計算器
開發Android應用主要使用的語言是Java,佈局檔案和介面則一般用XML來描述。整個應用的GUI開發與Java SWT、QT等其實區別不是特別大。如果有任何一種GUI程式開發經驗,學習Android應用開發就是一件非常容易的事。這篇文章裡我們來開發一個支
pytorch入門學習:torchvision.transforms
torchvision.transforms是pytorch中的影象預處理包 一般用Compose把多個步驟整合到一起: transforms.Compose([ transforms.CenterC
Pytorch入門——Autograd:自動分化
在上一篇部落格已經對Pytorch的Tensor進行了快速介紹,本章將繼續學習autograd包。autograd包是PyTorch所有神經網路的核心,為Tensors上的所有操作提供了自動區分。同時,它也是一個逐個執行的框架,意味著backprop由程式碼執行
神經網路加速器應用例項:影象分類
深度學習飛速發展過程中,人們發現原有的處理器無法滿足神經網路這種特定的大量計算,大量的開始針對這一應用進行專用晶片的設計。谷歌的張量處理單元(Tensor Processing Unit,後文簡稱TPU)是完成較早,具有代表性的一類設計,基於脈動陣列設計的矩陣計算加速單元,可以很好的加速神經網路的計算。本
Keras入門實戰(1):MNIST手寫數字分類
前面的部落格中已經介紹瞭如何在Ubuntu下安裝Keras深度學習框架。 現在我們使用 Keras 庫來學習手寫數字分類。 我們這裡要解決的問題是:將手寫數字的灰度影象(28 畫素×28 畫素)劃分到 10 個類別 中(0~9)。我們將使用 MNIST 資料集,它是機器學
PyTorch基礎入門六:PyTorch搭建卷積神經網路實現MNIST手寫數字識別
1)卷積神經網路(CNN)簡介 關於什麼是卷積神經網路(CNN),請自行查閱資料進行學習。如果是初學者,這裡推薦一下臺灣的李巨集毅的深度學習課程。連結就不給了,這些資料網站上隨處可見。 值得一提的是,CNN雖然在影象處理的領域具有不可阻擋的勢頭,但是它絕對不僅僅只能用來影
Caffe簡明教程5:訓練你的第一個Caffe模型-MNIST分類器
如果你已經根據前面幾篇文章成功地編譯了Caffe,那麼現在是時候訓練你的第一個模型了。我準備借用Caffe官網的LeNet例子來寫這篇文章,您也可以訪問原始的文件:Training LeNet on MNIST with Caffe Caffe在
基於PyTorch的深度學習入門教程(五)——訓練神經網路分類器
前言本文參考PyTorch官網的教程,分為五個基本模組來介紹PyTorch。為了避免文章過長,這五個模組分別在五篇博文中介紹。本文是關於Part4的內容。Part4:訓練一個神經網路分類器前面已經介紹了
keras學習例項(二):mnist 手寫體分類
承接上次筆記,這次進行mnist 的手寫體目標識別例項,先說明一下出現的問題。 如上圖,源程式類似keras的mnist_example例項,資料來源是通過 url = https://s3.amazonaws.com/img-datasets/mnist.npz 進行
Caffe學習筆記(六):mnist手寫數字識別訓練例項
一、前言 深度學習的一個簡單例項就是mnist手寫數字識別,只要這個例子弄明白,其它的內容就可以舉一反三了。之前的內容如有遺忘,可以進行回顧。 二、準備資料 資料集可以直接從我的github下載,包括資料集和程式碼,使用如下指令:
tensorflow 1.0 學習:用別人訓練好的模型來進行圖像分類
ima ppi gin 什麽 dir targe spl flow blog 谷歌在大型圖像數據庫ImageNet上訓練好了一個Inception-v3模型,這個模型我們可以直接用來進來圖像分類。 下載地址:https://storage.googleapis.com/d
Keras多分類例項:鳶尾花
鳶尾花資料集具有4個數值型輸入專案,並且數值具有相同的尺度,輸出專案是鳶尾花的三個子類。 這裡使用的是Scikit-Learn中提供的資料集,省略了資料預處理的過程,如果在UCI上面下載的話要使用Pandas中的read_csv()函式匯入資料,並使用Scikit-Learn的LabelEnco
Pytorch求索(3):使用訓練好的詞向量
nn.Embedding Pytorch自帶Embedding模組,可以方便使用 self.embed = nn.Embedding(vocab_size, embedding_dim) 那麼,如何使用已經訓練好的詞向量呢? 詞向量其實是模型的embedding層的權重,所
【AI實戰】訓練第一個AI模型:MNIST手寫數字識別模型
在上篇文章中,我們已經把AI的基礎環境搭建好了(見文章:Ubuntu + conda + tensorflow + GPU + pycharm搭建AI基礎環境),接下來將基於tensorflow訓練第一個AI模型:MNIST手寫數字識別模型。 MNIST是一個經典的手寫數字資料集,來自美國國家
pytorch:EDSR 生成訓練資料的方法
Pytorch:EDSR 生成訓練資料的方法 引言 Winter is coming 正文 pytorch提供的DataLoader 是用來包裝你的資料的工具. 所以你要將自己的 (numpy array 或其他) 資料形式裝換成 Tensor, 然後再放進這個包裝器中. 使用 DataL
Pytorch進行MNIST分類總結
Pytorch進行分類任務總結 作為Pytorch初學者,利用MNIST資料集作為基本資料集,使用Pytorch進行搭建模型訓練,本文件目的在記錄Pytorch進行深度學習系統搭建流程,使用時能隨時查閱。 文章目錄 Pytorch進行分類任務總結