UFLDL向量化程式設計練習:用MNIST資料集的稀疏自編碼器訓練實現
折騰了兩天,總算實現了用MNIST資料集的稀疏自編碼器訓練。發現了以下問題:
1,matlab程式設計所寫程式碼不能太奢侈。定義變數時要儘量節省記憶體資源,向量能解決的不要用方陣,int8型別能解決的不要用雙精度數;
2,UFLDL提供的minFunc函式有問題,樣本數再少都會溢位,換為第一單元建議的另外一個函式,fminlbgs.m可以避免記憶體溢位問題,而且用隨機選取的10000個手寫數字訓練能得到正確結果(與網站提供圖片一致)。
3,優化過程中真正的記憶體消耗,大頭不是樣本數,而是引數個數。10000個樣本,雙精度數時佔記憶體不過60多兆,而30萬個引數,保留幾個副本,普通機器真是相形見拙,令人灰心。不過從中悟出一些道理,也算值了。
4,我把用MNIST資料集訓練稀疏自編碼器程式打包上傳,希望能對感興趣的人有所幫助。
相關推薦
UFLDL向量化程式設計練習:用MNIST資料集的稀疏自編碼器訓練實現
折騰了兩天,總算實現了用MNIST資料集的稀疏自編碼器訓練。發現了以下問題: 1,matlab程式設計所寫程式碼不能太奢侈。定義變數時要儘量節省記憶體資源,向量能解決的不要用方陣,int8型別能解決的不要用雙精度數; 2,UFLDL提供的min
Tensorflow學習之路(一):從MNIST資料集開始
MNIST資料集簡單介紹: MNIST 資料集可在 http://yann.lecun.com/exdb/mnist/ 獲取, 它包含了四個部分: Training set images: train-images-idx3-ubyte.gz (9.9 MB,
深度學習入門教程UFLDL學習實驗筆記一:稀疏自編碼器
UFLDL即(unsupervised feature learning & deep learning)。這是斯坦福網站上的一篇經典教程。顧名思義,你將在這篇這篇文章中學習到無監督特徵學習和深度學習的主要觀點。 UFLDL全文出處在這:http://ufldl.stanford.edu/wiki/
ufldl 深度學習入門 第一發:基於BP網路實現稀疏自編碼器
目的:打算使用深度學習的方式實現人臉關鍵點的檢測,第一步是要學習深度學習。 步驟:第一步在ufldl上面學習深度學習的演算法基礎知識,然後找部落格上基於python呼叫theano庫實現人臉關鍵點檢測的演算法,看懂後基於C++實現,然後用java實現app,呼叫C++實現的
神經網路/自編碼器的實現(向量化Python版本實現)
神經網路/自編碼器的實現(向量版本) # -*- coding: utf-8 -*- """ Created on Tue Jan 2 17:47:29 2018 @author: lyh """ import numpy as np from skl
SLAM: 用測試資料集來測試VINS
目前編寫雙目VINS程式碼,發現雙目VINS初始化後的尺度存在問題(理想化雙目尺度應該為1),所以想著利用無誤差的測試集來測試一下自己寫的程式碼。我先在單目VINS下做了測試,下面是我利用github上賀所長的單目測試集在單目vins上測試的過程:1.單目VINS測試資料集:
UFLDL:稀疏自編碼器
吳恩達的 CS294A 是一門很好的深度學習入門課程,打算接下來的學習以這個課程的內容為主。UFLDL Tutorial 是 CS294A 課程的 wiki 頁,包含了課程講義和作業。如果你對 監督學習、邏輯迴歸、梯度下降 等基礎概念並不熟悉,可以先學習 之前的
Tensorflow學習教程------利用卷積神經網路對mnist資料集進行分類_利用訓練好的模型進行分類
#coding:utf-8 import tensorflow as tf from PIL import Image,ImageFilter from tensorflow.examples.tutorials.mnist import input_data def imageprepare(ar
基於TensorFlow理解三大降維技術:PCA、t-SNE 和自編碼器
余弦相似度 應對 新的 問題 技術 編碼 http 壓縮 方法 在我們開始之前,先看一個問題:如果你要為以下案例選擇一種降維技術,你會怎麽選? 1. 你的系統可以使用余弦相似度測量距離,但你需要將其可視化,以便不懂技術的董事會成員也能理解,這些人可能甚至從來沒聽說過余弦相
Python sklearn包——mnist資料集下不同分類器的效能實驗
Preface:使用scikit-learn各種分類演算法對資料進行處理。 2.2、Scikit-learn的測試 scikit-learn已經包含在Anaconda中。也可以在官方下載原始碼包進行安裝。本文程式碼裡封裝瞭如下機器學習演算法,我們修改資料載入函式,即可
深度學習筆記:稀疏自編碼器(1)——神經元與神經網路
筆者在很久以前就已經學習過UFLDL深度學習教程中的稀疏自編碼器,近期需要用到的時候發現有些遺忘,溫習了一遍之後決定在這裡做一下筆記,本文不是對神經元與神經網路的介紹,而是筆者學習之後做的歸納和整理,打算分為幾篇記錄。詳細教程請見UFLDL教程,看完教程之後
Deep Learning 2_深度學習UFLDL教程:向量化程式設計(斯坦福大學深度學習教程)
1前言 本節主要是讓人用向量化程式設計代替效率比較低的for迴圈。 在前一節的Sparse Autoencoder練習中已經實現了向量化程式設計,所以與前一節的區別只在於本節訓練集是用MINIST資料集,而上一節訓練集用的是從10張圖片中隨機選擇的8*8的10000張小圖塊。綜上,只需要在
深度學習入門教程UFLDL學習實驗筆記二:使用向量化對MNIST資料集做稀疏自編碼
今天來做UFLDL的第二個實驗,向量化。我們都知道,在matlab裡面基本上如果使用for迴圈,程式是會慢的一逼的(可以說基本就執行不下去)所以在這呢,我們需要對程式進行向量化的處理,所謂向量化就是將matlab裡面所有的for迴圈用矩陣運算的方法實現,在這裡呢,因為之前的實驗我已經是按照向量化的形式編寫的程
小練習:用socket實現Linux和Windows之間的通信
ren argc 漏洞 markdown tex sockets acc sas -m 在日常生活中,絕大部分人使用的機器通常是windows系統,可是對於研發人員,開發、編譯等工作往往是建立在linux機器上。其實。在服務器方面,Linux、UNIX和
Java練習:用IF()進行數字排序
新手學習import java.util.Scanner; /** Created by Administrator on 2018/4/19 0019.//*Compare.java 比較輸入值得大小並輸出 v.1*/public class Compare {public static void
python字典練習:用戶查找和添加地區
print bsp pri lis 存在 查找 emp {} () 1 db = {} # 全部地區 2 path = [] # 當前查看的路徑["長沙","芙蓉區"] 3 while True: 4 temp = db 5 for ite
程式設計5:用一個棧實現另一個棧的排序
<?php header("content-type:text/html;charset=utf-8"); /* * 用一個棧實現另一個棧的排序 P13 */ function sortStackByStack(SplStack $stack){ $help = new SplSta
PTA程式設計練習:7-2 然後是幾點(15 分)
題目: 有時候人們用四位數字表示一個時間,比如1106表示11點零6分。現在,你的程式要根據起始時間和流逝的時間計算出終止時間。 讀入兩個數字,第一個數字以這樣的四位數字表示當前時間,第二個數字表示分鐘數,計算當前時間經過那麼多分鐘後是幾點,結果也表
Linux C程式設計一站式學習程式設計練習:實現簡單的Shell
Linux C程式設計一站式學習P585程式設計練習: 實現簡單的Shell 用講過的各種C函式實現一個簡單的互動式Shell,要求: 給出提示符,讓使用者輸入一行命令,識別程式名和引數並呼叫適當的exec函式執行程式,待執行完成後再次給出提示符。 識別和處理
機器學習中向量化程式設計總結記錄
向量化程式設計總結記錄 很多時候,我們在實現演算法的時候,總會碰到累和的虛擬碼: 比如下面這個: 為了簡單我這裡只重複5次,但是原理是一樣的。 很顯然我們要得到這個結果,非常簡單,比如下面的這段python程式碼: 那麼我們有沒有更好的辦法呢?有的,看到