Udacity 深度學習的作業有人真運行過嗎?

上過Udacity深度學習的大牛們,我是一個初學者,剛接觸python和tensorflow不久,當然我已經使用C++5年了。剛看了Udacity的深度學習L1視頻,想著好好鑽研這部分的作業,但萬萬沒想到,作業給的提示或別人寫的代碼根本無法在自己機器上運行,https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/1_notmnist.ipynb

不知道有人完成過這個作業嗎?我百度別人的博客,貌似也有人能完成,但沒給出具體完成的步驟,也是給出一些複製下來全都無法運行的python代碼,O(∩_∩)O謝謝~萬分感激


配置的時候搜到這個問題,然而唯一的回答里直接放棄了windows……於是我自己瞎折騰了一星期以後飽含熱淚地過來回答一下關於方法一的配置……如果你像我一樣堅持要用windows的話可以試試看,因為我自己失敗了很多次以後才突然成功,而且我其實對那些操作具體在幹什麼完全不懂(電腦小白)並不確定其中的步驟有哪些是多餘的,所以請隨時刷新http://localhost:8888/ 測試結果。

方法 1: 先構建帶有 TensorFlow 和所有作業文件的 Docker 容器。

要快速用TensorFlow來完成作業,按照該 README 來做。

README里只有非常簡單的幾行字,但是在此之前電腦需要先安裝Docker。

1. 安裝Docker

Docker的安裝官方guide:Install Docker on Windows,這裡我先試了第一個方法:https://docs.docker.com/docker-for-windows/ ,第二個方法有興趣的可以自行嘗試。

如果你像官方guide一樣順利看到下面這張圖片,恭喜你可以繼續下一步了,請直接跳到2。

但是我比較倒霉,安裝的時候出現一個報錯:Hardware assisted virtualization and data execution protection must be enabled in the BIOS

總之就是那個虛擬化和DEP沒打開啦,作為一個電腦小白看到BIOS就頭痛啊……

第一個,虛擬化,可以到任務管理器 &> 性能 &> CPU里有一個虛擬化是不是禁用的。開機按F2進入BIOS,Configuratio &> Intel Virtual Technology &> Enabled。F10保存BIOS設置並重啟電腦。再check一下,虛擬化打開了。(這邊我不清楚是不是不同的電腦不太一樣,總之可以搜一下BIOS如果打開虛擬化。

第二個,data execution protection,這個在控制面板 &> 系統 &> 高級系統設置 &> 高級 裡面的性能設置,點開以後選定下面這個選項,確定,然後重啟。

然後無辜的我重啟後還是有這個bug,之後搜到Docker for Windows error: "Hardware assisted virtualization and data execution protection must be enabled in the BIOS" ,用裡面的方法試了試

1) go in control panel -&>[Programs] -&> [Windows Features] and completely uncheck all Hyper-V related components. Restart the system.

2) Enable Hyper-V again. Restart.

終於不報錯了,Docker算是能用了……因為我不能肯定之前的操作到底有沒有意義(電腦小白並不知道自己在做什麼=。=)所以都放上來給後人留個參考。

2. 運行Docker容器

安裝好Docker以後就可以開始做README里的第一步了。

首先以管理員身份運行PowerShell,在PowerShell里輸入:

docker run -p 8888:8888 --name tensorflow-udacity -it gcr.io/tensorflow/udacity-assignments:0.6.0

這一步有一點要注意的就是在牆內的記得科學上網,否則會下載失敗(並且還不報錯,導致我剛開始並不知道是網路問題又排查了半天QAQ

一旦成功了以後就可以直接用下面這句話進入了:

docker start -ai tensorflow-udacity

這一步運行成功顯示的界面大概是這樣的:

這部分我非常順利(相對),所以沒有什麼血淚經驗可以貢獻……

3. 打開notebooks

README里的介紹是這樣的:

On linux, go to: http://127.0.0.1:8888

On mac, find the virtual machine"s IP using:

docker-machine ip default

Then go to: http://IP:8888 (likely http://192.168.99.100:8888)

windows用戶再次受到一萬點暴擊!電腦小白利用腦子裡僅剩的一點知識,打開了cmd輸入ipconfig把我能看到的所有ipv4的地址都試了個遍,沒有用……在很後面很後面才搜到,原來windows可以直接訪問:http://localhost:8888。所以如果你能順利打開這網址並看到類似下面這個界面,恭喜你,又可以直接跳到4了。

這裡有一點我現在還是沒搞清楚,如果我連了vpn,這個地址就沒用了,我也試了一下vpn的ip地址完全不行,所以我最後放棄了,如果有大神知道為什麼求留言指導……

下面是我的解決步驟,因為我完全不懂自己到底對電腦做了什麼,不知道哪一步是多餘的,所以我就乾脆全部放出來了。一開始我用http://localhost:8888根本打不開,就以為這網址是錯的,沒繼續試,你們可以時不時去測試一下,能打開jupyter就可以跳到4了,記得測試的時候,docker里必須先運行那個容器哦。

首先雖然我不是mac我還是抱著赴死的心態試了一下README里的:

docker-machine ip default

顯示Host does not exist: 「default」,一口老血……

於是我在這裡找到創建default machine的方法:Get started with Docker Machine and a local VM ,這裡明明說的就是原來沒有default要創建一個嘛!教程欺詐!

第一步,打開PowerShell

第二步,運行docker-machine ls,顯示的如果是

$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS

說明目前還沒有任何machine,於是要創建第一個machine並且命名為default。

第三步,根據:Microsoft Hyper-V 一步步設置好,主要是新建那個Primary Virtual Switch以後再重啟。

第四步,在PowerShell輸入:

docker-machine create --driver virtualbox default

安裝成功,再查ip:

docker-machine ip default

這次就能查到了,可以再跑一下docker-machine ls檢查運行情況。

然後你以為到這裡就好了么?太天真了,我用查到的ip打開:http://[your ip address]:8888/ 還是不行……(舉個例子,我這裡是http://192.168.1.126:8888/)

然後被折磨到沒脾氣的我戰戰兢兢再試了一次在cmd里輸入ipconfig,然後用了

這個之前建立的Primary Virtual Switch的IPv4地址,居然打!開!了!!!!然後我也不知為何靈光一閃地再試了試http://localhost:8888,居然也打開了!!!總而言之總算能見到jupyter了非常感動,然而噩夢居然還沒有結束……

4. 任務1:notMNIST的運行

打開jupyter以後,直接點開1_notmnist.ipynb,可以看到以下界面:

點擊上面那個小按鈕就可以按照課程指導視頻運行代碼了。

5. 下載notMNIST資料庫

其實到上面那步已經回答完問題了不過我卡在資料庫這裡很久所以也講一下血淚經驗吧。

首先上面的回答有提到這個下載要翻牆(也有提到解決這個問題可以直接下載了放進去,但是jupyter只能上傳16M以內的文件所以對於方法一好像行不通),但是我翻牆就打不開jupyter這個網址,於是我搜到了另一個下載地址。也就是把1_notmnist.ipynb里第二塊代碼第一行的

url = "http://commondatastorage.googleapis.com/books1000/"

替換成

url = "http://yaroslavvb.com/upload/notMNIST/"

這個地址雖然可以不翻牆但是下載速度奇慢無比,而且我斷了好多次都斷在50%左右簡直吐血,如果下載到一半失敗了,倒回去http://localhost:8888把下載失敗的文件刪了,再倒回去restart the kernel重新跑一遍代碼(不restart有時候會卡住,我不知道為什麼)。

等你看到Download Complete!就看到了希望的曙光!然後繼續執行解壓的步驟,任務1里的notMNIST入門就完成了!

6. 展示一些圖片

以上算是DL課里任務1的notMNIST入門,完成了就可以試試看問題1:展示一些圖像。用Udacity 里提供的代碼,在problem 1下插入代碼模塊,運行:

from IPython.display import display, Image

display(Image(filename="notMNIST_small/A/Q0NXaWxkV29yZHMtQm9sZEl0YWxpYy50dGY=.png"))

如果你順利看到

這張圖,說明你的資料庫成功下載解壓好了,可以開始做題啦!當然如果感興趣可以再試試notMNIST_small/B/Q2FsaWd1bGEgUmVndWxhci50dGY=.png 和 notMNIST_small/C/QmVlc2tuZWVzQy5vdGY=.png 甚至「使用 os.listdir() 把所有文件導入目錄」 (python小白表示我還是不試了)

以上。摸魚完畢我要去幹活了=w=有人看再重新整理排版


最後一個實驗隔了好久都沒寫,最近發現以前的答案不能用了。解決辦法是從udacity-tensorflow把.ipynb下下來放到電腦上(實在不行就把整個項目下載下來找對應文件),然後安裝anaconda,之後打開Jupyter,在瀏覽器上點擊進入作業對應的文件夾,寫碼。

=================原答案=================

Win7 64位配置Udacity深度學習課程的編程環境

僅在本人的機器上測試有效,因此以下僅供參考。

到Docker Toolbox下載DockerToolbox.exe文件。按照默認的設置安裝,之後桌面上會多出三個圖標。

雙擊Docker Quickstart Terminal之後會有一個在本地找不到iso文件的錯誤。

手動將C:Program FilesDocker Toolbox目錄下的boot2docker.iso文件複製到C:UsersAdministrator.dockermachinecache目錄下。再次雙擊Docker Quickstart Terminal,已經沒有錯誤了。

之後雙擊桌面上的Kitematic (Alpha),點擊USE VIRTUALBOX。

點擊SKIP FOR NOW

在搜索框中搜索tensorflow-udacity,找到之後,點擊CREATE

鏡像下載得挺慢的,刷一會兒知乎。

下完了會自動打開,點擊右上角的箭頭,用瀏覽器打開。

至此,可以開心地去寫碼了。

跑了幾個實驗,發現經常出現內存不夠的問題。打開Oracle VM VirtualBox,default右鍵-&>退出-&>正常關機。

等關閉之後,點擊「系統」,修改內存大小,點擊OK就可以了。

之後再重新雙擊Docker Quickstart Terminal等待鯨魚出現,雙擊Kitematic (Alpha),點擊tensorflow-udacity,再點擊start。(這裡及以後適合電腦重新開機時的步驟)

再用瀏覽器打開

(完)


碼農場-自然語言處理、機器學習演算法

在這個網站裡面搜索「谷歌深度學習公開課任務」,裡面有全部實現

安裝方面我用的win10,anaconda+TensorFlow安裝方法網上有很多,安裝完成後,用anaconda帶的Jupyter Notebook運行這些代碼就行了


剛剛開始學的小白也來湊個熱鬧回答下吧,使用系統是Ubuntu

1. 第一個任務中需要import許多庫,因此,首先確保你這些庫都安裝上了(如果已經有pip,可以直接pip install *)

from __future__ import print_function
import matplotlib.pyplot as plt
import numpy as np
import os
import sys
import tarfile
from IPython.display import display, Image
from scipy import ndimage
from sklearn.linear_model import LogisticRegression
from six.moves.urllib.request import urlretrieve
from six.moves import cPickle as pickle

2. 之後,你也可以再安裝下tensorflow(這個作業沒有用上),具體安裝方法見https://www.tensorflow.org/install/

我是直接在Ubuntu下用的pip安裝的(沒有GPU)

pip install tensorflow

3. 為了打開作業,你需要安裝一下jupyter, 仍然可以pip安裝

pip install jupyter

4. 現在你就可以在命令行運行jupyter notebook,此時瀏覽器會自動打開一個界面,顯示你的文件目錄,或者可以在瀏覽器中輸入http://localhost:8888/進入這個頁面,之後找到作業所在的路徑,就可以打開啦。我之前也沒有接觸過jupyter notebook,使用時有點彆扭,它可以將代碼分為若干段,一段一段地運行。點擊下圖中的類似於播放的按鈕就可以運行當前所在cell的代碼(我剛開始一直不知道什麼時候程序結束,後來才發現右上角有個圓圈,是灰色時表示程序在運行,此外頁面會顯示busy)

5. 現在可以完成你自己的代碼啦,我在做時也是發現url打不開,後來看到了最高票的答案,發現原始代碼中的地址要翻牆,所以就換成了另一個地址「url = "http://yaroslavvb.com/upload/notMNIST/」

建議可以自己打開下載並解壓,這樣可能快一些

6. 第一個問題是讓你挑選幾張圖片顯示下,作業中已經給了一個例子了,直接隨機獲取一些圖片的名稱,再顯示出來就好了。

第二個問題是驗證pickle文件中的圖片是否是對的,利用庫matplotlib.pyplot中的figure()和show()即可。

第三個問題是看一下各類中的樣本是否均衡,直接用函數len()獲取各個類的長度,進行比較。

第四個問題是查看數據混合後時候有效,仍然是隨機獲取一些數據,顯示出來即可。

第五個問題是讓看訓練集和測試集是否有重合。這個問題我還沒想到怎麼做%>_<%非科班出身表示不熟悉是否有現成的演算法或庫,只能想到講數組進行比較,可是這樣數據量太大了,還需要請教下高手。

第六個問題就是來構建一個分類器了,我沒有用課堂上要求的庫sklearn,而是用了tensorflow,直接參考tensorflow教程即可。


可以運行,請看教程。

首先指出:這部分代碼不是複製下來運行的囧,你需要一個稱為jupyter的東西來運行。

根據課程提示,在udacity課程中的 #任務1:notMNIST# 作業界面可以看到:

注意: 按照這裡所描述的, 先安裝 Tensorflow 並獲取所有任務的啟動代碼。

點擊之後可以跳轉到這個界面(不知道直接點擊我答案里的鏈接行不行,目測是跟我的課程信息綁定的,需要你進入你的課程界面點擊):

&下面就比較尷尬了,根據你的計算機系統,需要選擇 方法1 or 方法2。&

&方法1太麻煩了,使用windows有諸多不便,可以直接安裝一個Linux來繼續學習,不然後患無窮,當然如果你有一顆無畏的心,可以點擊 #README# 來進行Docker的探索。&

&為了方便起見,這裡假設你使用的是Linux或者Mac OS X:&

更正:windows原來也能用tensorflow。。我太愚了。。(只支持python 3.5)

以下內容通用:

0. (如果已經安裝了python,跳到下一步)安裝python,這一步就不解釋了(⊙﹏⊙)b

1. (如果已經安裝了tensorflow,跳到下一步)下載和安裝tensorflow,直接使用

pip install tensorflow

即可。

2. (如果已經安裝了jupyter,跳到下一步)安裝那個神奇的jupyter,同樣的方法:

pip install jupyter

3. (如果已經有了tensorflow的源碼,跳到下一步)下載github上的源碼tensorflow/tensorflow,直接下載zip包解壓,或者使用git clone都可以。

4. 好了,下面可以使用jupyter打開了:

cd tensorflow/examples/udacity
jupyter notebook

不出意外的話,你的瀏覽器會自動打開一個頁面,然後就開始了教程中的:

PS:在運行代碼的時候,還會提示很多庫沒有安裝,需要手動安裝的包括但不限於:scipy, matplotlib, pillow。

PPS:在下載數據集的時候,可能被牆導致各種下載問題,可以先用下載工具下載,然後直接放到 tensorflow/examples/udacity 目錄下。

PPPS:大神C++求帶飛 []~( ̄▽ ̄)~*


同為新手,之前學的時候棄過一段時間坑,放假了回來補上

互動式工具用的也是 jupyter notebook; 都一樣的

wishingwei/tensorflow


推薦閱讀:

深度學習系統相比較傳統的機器學習系統,針對常見的分類問題,精度究竟能有多大提升?
如何看待Tencent AI 人臉檢測結果在FDDB上的逆天表現?
如何評價FAIR的最新工作Data Distillation?
傳統的CTR或推薦系統擁有高維特徵和稀疏數據,轉向深度學習如何高效實現?
老師木的機器學習水平,帶實習生的水平,以及當爸爸的水平怎麼樣?

TAG:深度學習DeepLearning | TensorFlow |