pytorch實戰(二)-多層感知機識別MNIST數字
import torch from torch.autograd import * from torch import nn,optim from torch.utils.data import DataLoader from torchvision import datasets,transforms class simpleNet(nn.Module): def __init__(self,in_dim,n_hidden_1,n_hidden_2,out_dim): super(simpleNet,self).__init__() self.layer1=nn.Linear(in_dim,n_hidden_1) self.layer2=nn.Linear(n_hidden_1,n_hidden_2) self.layer3=nn.Linear(n_hidden_2,out_dim) def forward(self, x): x=self.layer1(x) x=self.layer2(x) x=self.layer3(x) return x class Activation_Net(nn.Module): def __init__(self, in_dim, n_hidden_1, n_hidden_2, out_dim): super().__init__() self.layer1 = nn.Sequential(nn.Linear(in_dim, n_hidden_1),nn.ReLU(True)) self.layer2 = nn.Sequential(nn.Linear(n_hidden_1, n_hidden_2),nn.ReLU(True)) self.layer3 = nn.Sequential(nn.Linear(n_hidden_2, out_dim)) def forward(self, x): x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) return x class Batch_Net(nn.Module): def __init__(self, in_dim, n_hidden_1, n_hidden_2, out_dim): super().__init__() self.layer1 = nn.Sequential(nn.Linear(in_dim, n_hidden_1),nn.BatchNorm1d(n_hidden_1),nn.ReLU(True)) self.layer2 = nn.Sequential(nn.Linear(n_hidden_1, n_hidden_2),nn.BatchNorm1d(n_hidden_2),nn.ReLU(True)) self.layer3 = nn.Sequential(nn.Linear(n_hidden_2, out_dim)) def forward(self, x): x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) return x batch_size=64 learning_rate=1e-2 num_epoches=20 data_tf=transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.5],[0.5])]) train_dataset=datasets.MNIST(root='./data',train=True,transform=data_tf,download=True) test_dataset=datasets.MNIST(root="./data",train=False,transform=data_tf) train_loader=DataLoader(train_dataset,batch_size=batch_size,shuffle=True) test_loader=DataLoader(test_dataset,batch_size=batch_size,shuffle=False) model=Batch_Net(28*28,300,100,10) if torch.cuda.is_available(): model=model.cuda() criterion=nn.CrossEntropyLoss() optimizer=optim.SGD(model.parameters(),lr=learning_rate) for epoch in range(num_epoches): loss_sum, cort_num_sum,acc = 0.0, 0,0 for data in train_loader: img,label=data img=img.view(img.size(0),-1) if torch.cuda.is_available(): inputs = Variable(img).cuda() target = Variable(label).cuda() else: inputs = Variable(img) target = Variable(label) output =model(inputs) loss = criterion(output, target) optimizer.zero_grad() loss.backward() optimizer.step() loss_sum += loss.data _, pred = output.data.max(1) num_correct = pred.eq(target).sum() cort_num_sum += num_correct acc=cort_num_sum.float()/len(train_dataset) print( "After %d epoch , training loss is %.2f , correct_number is %d accuracy is %.6f. "%(epoch,loss_sum,cort_num_sum,acc)) model.eval() eval_loss=0 eval_acc=0 for data in test_loader: img ,label =data img=img.view(img.size(0),-1) if torch.cuda.is_available(): img=Variable(img,volatile=True) label=Variable(label,volatile=True) else: img = Variable(img, volatile=True) label = Variable(label, volatile=True) out=model(img) loss=criterion(out,label) eval_loss+=loss.data*label.size(0) _,pred=out.data.max(1) num_correct=pred.eq(label).sum() eval_acc+=num_correct.data print('Test loss: {:.6f},ACC: {:.6f}'.format(eval_loss.float()/(len(test_dataset)),eval_acc.float()/(len(test_dataset))))
相關推薦
pytorch實戰(二)-多層感知機識別MNIST數字
import torch from torch.autograd import * from torch import nn,optim from torch.utils.data import DataLoader from torchvision import d
TensorFlow筆記(二)---多層感知機識別手寫數字
Softmax Regression無隱含層,在MNIST資料集上取得了大約92%的正確率,提高準確度,要給神經網路加上隱含層,並使用能減輕過擬合的Dropout,自適應學習速率的Adagrad以及可以解決梯度彌散的啟用函式ReLU. 定義演算法公式即神經網路
Deep learning with Theano 官方中文教程(翻譯)(三)——多層感知機(MLP)
供大家相互交流和學習,本人水平有限,若有各種大小錯誤,還請巨牛大牛小牛微牛們立馬拍磚,這樣才能共同進步!若引用譯文請註明出處http://www.cnblogs.com/charleshuang/。 下面。http://deeplearning.net/tutorial/mlp.html#mlp 的中
Deeplearning4j 實戰(5):基於多層感知機的Mnist壓縮以及在Spark實現
在上一篇部落格中,我們用基於RBM的的Deep AutoEncoder對Mnist資料集進行壓縮,應該說取得了不錯的效果。這裡,我們將神經網路這塊替換成傳統的全連線的前饋神經網路對Mnist資料集進行壓縮,看看兩者的效果有什麼異同。整個程式碼依然是利用Deeplearning4j進行實現,並且為了方
深度學習筆記二:多層感知機(MLP)與神經網路結構
為了儘量能形成系統的體系,作為最基本的入門的知識,請參考一下之前的兩篇部落格: 神經網路(一):概念 神經網路(二):感知機 上面的兩篇部落格讓你形成對於神經網路最感性的理解。有些看不懂的直接忽略就行,最基本的符號的記法應該要會。後面會用到一這兩篇部落格中
深度學習Deeplearning4j 入門實戰(5):基於多層感知機的Mnist壓縮以及在Spark實現
在上一篇部落格中,我們用基於RBM的的Deep AutoEncoder對Mnist資料集進行壓縮,應該說取得了不錯的效果。這裡,我們將神經網路這塊替換成傳統的全連線的前饋神經網路對Mnist資料集進行壓縮,看看兩者的效果有什麼異同。整個程式碼依然是利用Deeplearnin
深度學習實踐(二)——多層神經網路
#一、準備 為了更深入的理解神經網路,筆者基本採用純C++的手寫方式實現,其中矩陣方面的運算則呼叫opencv,資料集則來自公開資料集a1a。 實驗環境: Visual studio 2017 opencv3.2.0 a1a資料集 本文緊跟上篇文章深度
Dubbo實戰(二)多協議配置
本文將展示如何在Dubbo中使用多協議來暴露服務。 1、不同服務不同協議 例如:不同服務在效能上適用不同協議進行傳輸,比如大資料用短連線協議,小資料大併發用長連線協議。配置如下: provider-multi-protocol.xml <?xml
Maven實戰(二)---多模組開發---缺少Jar包
Maven裡面的Jar包經常出現Missing的情況,無外乎幾種情況: 1、私服裡面沒有相應的版本號的Jar包或者Jar包沒寫版本號 2、Jar包引錯了,相應的依賴關係也就錯了 3、引入了依賴的Jar
tensorflow 多層感知機 分類mnist
from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("/root/data/", one_hot=True) import tensorf
mxnet多層感知機訓練MNIST資料集詳解【轉】
來自:http://www.cnblogs.com/Mu001999/p/6221093.html #匯入需要的模組 import numpy as np #numpy只儲存數值,用於數值運算,解決Python標準庫中的list只能儲存物件的指標的問題 import os
用pytorch實現多層感知機(MLP)(全連線神經網路FC)分類MNIST手寫數字體的識別
1.匯入必備的包 1 import torch 2 import numpy as np 3 from torchvision.datasets import mnist 4 from torch import nn 5 from torch.autograd import Variable 6
深度學習基礎(二)—— 從多層感知機(MLP)到卷積神經網路(CNN)
經典的多層感知機(Multi-Layer Perceptron)形式上是全連線(fully-connected)的鄰接網路(adjacent network)。 That is, every neuron in the network is connec
TensorFlow實戰(五)- 使用TensorFlow實現多層感知機
一,多層感知機簡介 多層感知機也叫 深度前饋網路 或 前饋神經網路。 “多層”本質上指的是多層隱含層,神經網路的非線性也主要體現在隱含層非線性的啟用函式上,理論上只要隱含節點足夠多,只要有一層隱含層就可以擬合任意函式,但隱含層越多,就越容易擬合複雜函式,並且
DeepLearning tutorial(3)MLP多層感知機原理簡介+程式碼詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
基於神經網路(多層感知機)識別手寫數字
資料集是經典的MNIST,來自美國國家標準與技術研究所,是人工書寫的0~9數字圖片,圖片的畫素為28*28,圖片為灰度圖。MNIST分別為訓練集和測試集,訓練資料包含6萬個樣本,測試資料集包含1萬個樣本。使用Tensorflow框架載入資料集。 載入資料集的程式碼如下: import ten
TensorFlow HOWTO 4.2 多層感知機迴歸(時間序列)
4.2 多層感知機迴歸(時間序列) 這篇教程中,我們使用多層感知機來預測時間序列,這是迴歸問題。 操作步驟 匯入所需的包。 import tensorflow as tf import numpy as np import pandas as pd import matp
TensorFlow HOWTO 4.1 多層感知機(分類)
4.1 多層感知機(分類) 這篇文章開始就是深度學習了。多層感知機的架構是這樣: 輸入層除了提供資料之外,不幹任何事情。隱層和輸出層的每個節點都計算一次線性變換,並應用非線性啟用函式。隱層的啟用函式是壓縮性質的函式。輸出層的啟用函式取決於標籤的取值範圍。 其本質上相當於
多層感知機(MLP)演算法原理及Spark MLlib呼叫例項(Scala/Java/Python)
多層感知機 演算法簡介: 多層感知機是基於反向人工神經網路(feedforwardartificial neural network)。多層感知機含有多層節點,每層節點與網路的下一層節點完全連線。輸入層的節點代表輸入資料,其他層的節點通過將輸入資料與層上節點
TensorFlow學習筆記(4)--實現多層感知機(MNIST資料集)
前面使用TensorFlow實現一個完整的Softmax Regression,並在MNIST資料及上取得了約92%的正確率。現在建含一個隱層的神經網路模型(多層感知機)。 import tensorflow as tf import numpy as np