色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Datalore開發機器學習項目的體驗

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-06-11 11:23 ? 次閱讀

如果說“古代”的編輯器圣戰是Vi和Emacs,那當今時代的IDE圣戰可能是Eclipse和Intellij了。大多數人都覺得Intellij是后出轉精。不過,Eclipse其實有一個獨特的優勢,Eclipse Che,基于Eclipse的云端開發環境。Eclipse Che可以方便地統一開發環境,避免不同系統、不同硬件導致的各種兼容問題,同時節省開發人員配置環境的時間。Intellij乃至其他JetBrains系的IDE,則都只有本地版本。

不過,JetBrains今年倒是出了一個云端開發環境Datalore,不過并不針對Java開發者,而是面向機器學習

經過三個多月的公測,Datalore的基本功能也比較完善了。所以今天我們將通過一個具體的例子(使用卷積網絡分類服飾圖像)來分享下基于Datalore開發機器學習項目的體驗。

首先我們訪問datalore.io,可以使用Google賬號或JetBrains賬號登錄。如果沒有的話,可以注冊一個。

登錄后,點擊New workbook圖標,新建一個workbook。

如果你接觸過Jupyter Notebook,那么workbook可以看成是Jupyter Notebook的加強版。如果你沒接觸過,那么簡單來說,workbook是內嵌代碼的文檔,其中的代碼是可以直接運行的。

workbook是左右雙欄,左邊是源代碼,右邊顯示結果。

我們注意到,左邊默認提供了一些常用操作,包括load dataset(加載數據集)、standard imports(標準導入),等等。如果你接觸過JetBrains家的IDE,那么你應該已經意識到,這是JetBrains系列IDE廣受贊譽的意圖行動(intention actions)功能。

我們首先要做的是引入相應的庫,當把鼠標懸浮到standard imports(標準導入)后,會有懸浮提示,告訴我們所謂的標準導入包括numpy、pandas、matplotlib,還有datalore定制的一個繪圖庫。如果你打算做一點數據分析,或者數據可視化的工作,那這個標準導入就很方便。只需點擊一下就可以自動生成導入語句,不用一行一行敲了。

不過我打算試下機器學習,所以就不用這個標準導入了。我將導入TensorFlow

import tensorflow as tf

咦,我只輸了i、m兩個字母,workbook界面就出現了這個:

是啊,JetBrains出品的東西怎么少得了自動補全呀?按回車就好,不用一個一個字母敲了。

然后我輸入tensorflow。咦?沒有補全。感覺不太妙。

果然,tensorflow顯示為紅色,意味著出問題了。再看右邊,是報錯信息,提示沒有tensorflow這個模塊。

看來tensorflow沒有預裝。我們裝一下。菜單選擇Tools(工具)->Library Manager(庫管理器),輸入tensorflow搜索。

鼠標點下就可以裝了,右邊還有下拉菜單可以選版本。

稍等片刻就裝好了,其間會彈出窗口顯示安裝信息,等看到綠色的Installation complete(安裝完成)就說明安裝成功了。可以點Close(關閉)把窗口關了。

由于安裝了新的包,Datalore會提示你需要重啟內核(restart kernel),確認就可以了。然后我們看到,報錯信息消失了。我們可以接著鍵入as tf了。

然后我們需要加載數據集。點擊load dataset,可以看到,其中包括了一些常用的數據集。

前面我已經說過,我打算試下機器學習。而且我剛安裝了TensorFlow。那TensorFlow入門最經典的數據集就是MNIST,Datalore也提供了。

不過么……

“花書”作者Ian Goodfellow、Keras作者Fran?ois Chollet一起炮轟MNIST

上面的推特就不逐字逐句翻譯了,大意就是MNIST不能代表現代的計算機視覺任務,學術界不應該老是用MNIST。

所以我也趕下時髦,換個數據集用用。好吧,我只是找了個借口,不管怎么說,MNIST用來入門還是不錯的。其實我只是看了太多MNIST的入門教程,有點審美疲勞了。

手寫數字看厭了,畢竟數字又不能當飯吃。不如換成衣服、鞋子吧,雖然也不能吃,好歹可以穿啊。

隆重介紹MNIST的時尚版,Fashion-MNIST。

TensorFlow的API寫起來還是有點啰嗦,所以我決定使用Keras。而且,Keras的datasets模塊自帶獲取和加載Fashion-MNIST的方法。

按照之前描述的方法,通過Library Manager安裝Keras后,加載Fashion-MNIST數據集:

from keras.datasets import fashion_mnist

(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()

好吧,這行代碼看著稍微有點長,其實在Datalore里打起來非常快,因為很多地方稍微敲一兩個字母就可以一路補全下去。與此同時,我們能在右邊看到,Datalore會自動幫我們下載數據集,并在下載完成后自動加載數據集。

好了。數據集加載好了,下面我們將構建一個模型分類服飾。分類圖像最常用的是卷積神經網絡,這也是我們的選擇。圖像的每個像素是由整數表示的(0-255的亮度值),為了提高訓練的效率,我們需要首先將其歸一化:

x_train = x_train.astype('float32') / 255

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)

x_test = x_test.astype('float32') / 255

x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)

除了歸一化外,我們還順便重整了一下數據的形狀為28, 28, 1(Fashion-MNIST中的圖像為28x28的灰度圖像)。

和MNIST一樣,Fashion-MNIST中的圖像分屬10類:

圖片來源:Margaret Maynard-Reid

在數據集中,標簽(y_train)是類別變量,具體而言,是取值范圍為0-9的整數。一般而言,為了便于模型利用,我們需要將其轉成one hot編碼。y_test同理。

y_train = keras.utils.to_categorical(y_train, 10)

y_test = keras.utils.to_categorical(y_test, 10)

這里有一個提高效率的小技巧。在輸完y_train這行后,按Ctrl + D(Mac OS X下是Command + D),可以復制當前行。之后將復制行中的兩個y_train改成y_test就可以了。

設計預處理完畢,接著就是設計模型了。由于本文的主題不是關于如何設計卷積網絡,因此我這里就偷個懶,直接使用Keras自帶的MNIST分類器樣例(examples/mnist_cnn.py),看看這個為MNIST設計的CNN分類器在Fashion-MNIST上的效果如何。

model = Sequential()

model.add(Conv2D(32, kernel_size=(3, 3),

activation='relu',

input_shape=(28, 28, 1)))

model.add(Conv2D(64, (3, 3), activation='relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Dropout(0.25))

model.add(Flatten())

model.add(Dense(128, activation='relu'))

model.add(Dropout(0.5))

model.add(Dense(10, activation='softmax'))

這個CNN網絡模型還是比較簡單的。我們有兩個卷積層(均使用3x3的卷積核和ReLU激活),之后加上最大池化層,然后是Dropout層和全連接層,最后,因為需要預測10個分類,所以順理成章地在輸出層中使用了softmax激活。

接下來我們編譯模型,因為是分類問題,所以損失函數很自然地使用了交叉熵。優化使用了Adadelta,這是Matthew D. Zeiler在2012年底提出的一種優化算法,使用自適應的學習率。

model.compile(loss=keras.losses.categorical_crossentropy,

optimizer=keras.optimizers.Adadelta(),

metrics=['accuracy'])

然后就是訓練和評估,并輸出結果:

model.compile(loss=keras.losses.categorical_crossentropy,

optimizer=keras.optimizers.Adadelta(),

metrics=['accuracy'])

model.fit(x_train, y_train,

batch_size=128,

epochs=20,

verbose=1,

validation_data=(x_test, y_test))

score = model.evaluate(x_test, y_test, verbose=0)

print('測試損失', score[0])

print('測試精確度', score[1])

由于Datalore目前為免費公測階段,只有t2.medium規格的AWS主機可用(2核、4 GB內存),因此,大約需要等1小時完成訓練。等以后正式上線了,會有GPU主機可用(p2.xlarge,4 cpu核心、1 gpu核心、61GB 內存,12 GB顯存)。當然,你也可以嘗試去Datalore官方論壇申請GPU主機。

結果:

測試損失 0.22063894088864328

測試精確度 0.9295

20個epoch后精確度超過90%,比我預料中的表現要好。

看到這個結果,我有點好奇這個模型在MNIST上的表現有多好。Keras文檔告訴我精確度超過99%,不過,俗話說得好,耳聽為虛,眼見為實。我想親自試一試。

實際上,上面的代碼只需改動兩處,就可以變為分類MNIST。

將開頭兩行中的fashion_mnist替換為mnist:

from keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

其他的都不用動。就這么簡單!

不過,在此之前,先讓我們保存一下當前的版本,以備以后繼續使用。

通過菜單Tools->Add history checkpoint,我們可以添加一個checkpoint,比如說,起名為keras-mnist-cnn.

然后,通過菜單Tools->History,我們可以查看workbook的歷史。其中,第一個checkpoint是創建workbook時的狀態。除此之外,勾選左上角的Show inactivity checkpoints之后,我們能看到很多Datalore自動保存的checkpoint,你再也不用擔心不小心丟失代碼了。沒錯,如果你接觸過JetBrain系的IDE,這就是其歷史功能。

你不僅可以查看不同的checkpoint,還可以比較不同checkpoint之間的區別:

這個功能在調bug的時候是非常方便的。說到調bug,在Datalore下調bug還是比較方便的。比如,假設我們把模型的輸入形狀改一下,故意改成錯誤的:

這雖然是一個故意編造的簡單錯誤,但確實是可能出現的錯誤。因為有的情況下,頻道是放在最前的。有的時候不小心,就會出現這種失誤。

一旦我們做了這個改動后,Datalore幾乎立刻反應過來。

從上圖我們可以看到:

代碼單元左邊框為紅色,提示我們這里有誤。正常情況下,左邊框為閃爍的綠色(提示正在進行運算)或黃色(提示運算完成)。

右側結果為報錯的Trackback.

左側代碼的出錯行有紅色波浪線標識。懸浮鼠標于其上,我們能看到報錯信息,如下圖所示。

其實很多地方,懸浮鼠標都能給出相應的提示,比如懸浮到y_train后,會提示這是一個變量(而不是函數),甚至Datalore能推斷其類型numpy.ndarray。

而單擊一個變量后,Datalore會高亮這一變量的所有用例:

從上圖我們可以看到,Datalore沒有直接簡單粗暴地匹配字符串,最后兩行中,注釋和字符串里的x_test并沒有高亮。

好了,說了這么多。讓我們回到之前的MNIST數據集訓練上來。如前所述將兩處fashion_mnist替換為mnist后,我們在MNIST數據集上訓練模型,并評估其表現。

最終訓練了一個多小時(和Fashion-MNIST時間差不多,畢竟這兩個數據集的圖像規格是一樣的,都是28x28的灰度圖像),20個epoch后精確度為0.9918,看來Keras文檔所言不虛。

當然,除了代碼之外,workbook里還能寫文檔。文檔使用Markdown格式,加上了LaTeX公式擴展。

另外,線上開發環境的一大優勢就是方便協作。Datalore也不例外。通過菜單File->Share即可邀請別人協作,一起開發。

分享共有3種方式:

輸入Datalore用戶名或郵箱,邀請對方協作開發。

分享一個鏈接,通過這個鏈接訪問的用戶可以協作開發。

同樣是分享一個鏈接,只不過這是一個只讀鏈接,通過這個鏈接訪問的用戶只能查看,無法修改。

最后,附上快捷鍵列表(有些已經在前文中介紹過):

C-空格(C在mac os x上是Command鍵,其他平臺上是ctrl鍵)可以觸發自動補全。

C-d重復當前行

在Markdown單元中,按alt + 左右方向鍵可以在單詞間跳轉。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編輯器
    +關注

    關注

    1

    文章

    806

    瀏覽量

    31209
  • 機器學習
    +關注

    關注

    66

    文章

    8425

    瀏覽量

    132770
  • 數據集
    +關注

    關注

    4

    文章

    1208

    瀏覽量

    24737

原文標題:Datalore初體驗:JetBrains的云端機器學習開發環境

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【申精】智能機器項目實戰(免費) 轉

    智能機器項目實戰(免費)本課程著眼于實際應用,循序漸進的進行機器人實戰;并在實戰中提升基礎能力,從結構設計基礎、三維設計軟件的應用、運動學和動力學仿真、C語言基礎、單片機的應用、嵌入式開發
    發表于 02-23 14:42

    有承接開發項目的嗎?

    有承接開發項目的嗎,公司打算開發一套測控系統,其中控制伺服電機,測量位移、壓力,測控溫度,想用ARM開發,觸摸屏操作,同時上位機也可以操作,有感興趣的可以詳談,我的QQ:9850622
    發表于 03-17 12:10

    【米爾MYD-C7Z020開發板試用申請】機器項目評估

    項目名稱:機器項目評估試用計劃:本人在有機器人和視覺領域有7年多的學習開發經驗,曾設計過AG
    發表于 10-30 17:03

    如何完成機器學習項目流程和數據清洗

    機器學習:完整機器學習項目流程,數據清洗
    發表于 04-26 09:31

    機器學習入門篇:一個完整的機器學習項目

    機器學習項目入門篇:一個完整的機器學習項目
    發表于 05-11 14:47

    Deeplearningai結構化機器學習項目

    Deeplearningai 結構化機器學習項目 Week2 6-10
    發表于 05-18 15:12

    通常項目的開發過程是怎樣的?

    做技術的,不免要和項目打交道,無論是學校還是企業,都要有項目的開發過程吧首先,要對項目的需求進行分析,我想問問都分析一些什么呢?其次,要弄清哪些功能的可執行性,具體什么
    發表于 06-01 15:56

    11個機器學習開源項目

    隨著機器學習越來越受到開發者關注,出現了很多機器學習的開源項目,在本文列舉的11個
    發表于 02-14 14:25 ?2825次閱讀

    全年開源項目的盤點和總結

    如果你們這些.NET 開發者們想要學一點機器學習知識來補充現有的技能,你會怎么做?現在就有一個完美的開源項目可以助你開始實施這一想法!這個完美的開源
    的頭像 發表于 01-17 11:18 ?3353次閱讀

    谷歌大牛Ian Goodfellow已經加盟蘋果,擔任特殊項目的機器學習主管

    Ian Goodfellow在蘋果擔任“特殊項目組的機器學習主管”,具體工作內容并未披露。目前,除了為FaceID和Siri等功能開發AI之外,涉及到AI的還有自動駕駛技術,而蘋果不久
    的頭像 發表于 04-08 08:52 ?2728次閱讀
    谷歌大牛Ian Goodfellow已經加盟蘋果,擔任特殊<b class='flag-5'>項目的</b><b class='flag-5'>機器</b><b class='flag-5'>學習</b>主管

    Everyday Robot項目啟動 意在開發通用學習機器

    今天,Alphabet的X moonshot部門(以前稱為Google X)啟動了Everyday Robot項目,該項目的目的開發“通用學習機器
    發表于 11-22 11:29 ?798次閱讀

    機器學習模型部署到ML項目的過程

    在構建一個大的機器學習系統時,有很多事情需要考慮。但作為數據科學家,我們常常只擔心項目的某些部分。
    的頭像 發表于 05-04 11:56 ?2158次閱讀

    Facebook開發出更加強大的機器學習模型

    近日,Facebook公司分享了兩個內部人工智能項目的細節,分別是Learning from video和TimeSformer,這兩個項目旨在促進更強大的機器學習模型的
    的頭像 發表于 03-18 09:18 ?1736次閱讀

    ST MEMS傳感器內嵌機器學習核心的優勢

    ???????一旦您熟悉了開發步驟并掌握了機器學習項目中的要點,就能夠開發有價值的機器
    的頭像 發表于 09-03 14:55 ?1764次閱讀

    機器視覺應用項目的文檔應包括哪些

    和安裝與測試小組。項目經理對機器視覺系統必須非常專業和熟悉,負責項目的總體設計、任務分配、進度安排和必要的開發工作;研發小組致力于光學系統設計、機械安裝結構設計、信號與電氣設計、軟件功
    的頭像 發表于 09-10 10:39 ?815次閱讀
    主站蜘蛛池模板: 亚洲精品美女久久久久99| 两个奶头被吃得又翘又痛| 亚洲精品久久7777777| 中文在线观看| 日本学生VIDEOVIDEOS更新| 九九热视频免费观看| 超碰最新网站| 色欲AV亚洲永久无码精品麻豆| 久久91精品国产91| 国产高潮久久精品AV无码| 91av电影在线观看| 一个人免费观看HD完整版| 丝瓜涩涩屋黄瓜香蕉丝瓜| 精品淑女少妇AV久久免费| 越南美女内射BBWXZ| 午夜电影三级还珠格格| 欧美特级特黄AAAAA片| 国产骚妇BB网| 成人无码精品一区二区在线观看| 午夜亚洲国产理论片二级港台二级 | 麻豆啊传媒app黄版破解免费| 国产乱码一区二区三区| 成人片免费看| FREE17一18外女破| 99re8久久热在线视频| 亚州综人网| 涩涩在线视频| 日本男女动态图| 欧美麻豆一精品一AV一免费| 麻豆国产99在线中文| 久久嫩草影院网站| 久久黄色网址| 久久精品在现线观看免费15| 精品三级在线观看| 精品麻豆一卡2卡三卡4卡乱码 | 中国老太太xxx| 孕交videosgratis乌克兰| 艳妇臀荡乳欲伦岳TXT下载| 亚洲精品国产自在现线最新| 亚洲高清视频网站| 亚洲精品视频在线观看视频|