歡迎光臨陜西驪山低速風(fēng)機(jī)動(dòng)力制造有限公司官網(wǎng)!

全國(guó)咨詢熱線:

400-8888-888

減速機(jī)大全圖片1比2減速機(jī)_減速機(jī)型號(hào)大全圖片

所屬分類:技術(shù)與研發(fā) 發(fā)布日期:2024-10-04 瀏覽次數(shù):4

  “

  天清

  PaperWeekly 交流二群群友

  關(guān)注音樂(lè)生成和量化交易

  創(chuàng)意來(lái)源

深度學(xué)習(xí)訓(xùn)練是一個(gè)非常耗時(shí)、枯燥的過(guò)程:一次訓(xùn)練少則幾個(gè)小時(shí)減速機(jī)大全圖片1比2減速機(jī),多則數(shù)天,而且中途能人為干預(yù)的機(jī)會(huì)更是少之又少,在大部分時(shí)間里能做的只有等待。

不少人都有這樣強(qiáng)迫癥,腳本開(kāi)始運(yùn)行后會(huì)不停的看準(zhǔn)確率和loss,就像像球迷看球賽、股民盯報(bào)價(jià)一樣刺激。一般來(lái)說(shuō),想要監(jiān)控深度學(xué)習(xí)訓(xùn)練,只能使用 ssh 或者 Tensorboard。一旦需要外出,只能通過(guò)手機(jī)監(jiān)控深度學(xué)習(xí),操作十分麻煩,于是只能無(wú)奈地守在電腦前空耗生命。

我們急需一種辦法能夠?qū)⑽覀儚碾娔X前解放,讓監(jiān)控深度學(xué)習(xí)變得簡(jiǎn)單方便,不再受時(shí)間、空間和平臺(tái)的限制。在當(dāng)今社會(huì),有什么東西是在任何時(shí)間任何地點(diǎn)我們都能使用的呢減速機(jī)大全圖片1比2減速機(jī)?答案只有一個(gè):微信。

微信是每個(gè)中國(guó)人接入社會(huì)的重要接口,我們用微信在地鐵上看雞湯、在商場(chǎng)使用電子支付、癱在沙發(fā)上刷朋友圈……總之,微信幾乎包辦減速機(jī)大全圖片1比2減速機(jī)了我們生活中的一切,讓人產(chǎn)生一種錯(cuò)覺(jué),在不久的未來(lái)手機(jī)上只需要裝微信一個(gè)軟件就夠了。那么,如果微信能把監(jiān)控深度學(xué)習(xí)也包辦了豈不是妙哉?

  在知乎上看到@Coldwings - 利用微信監(jiān)管你的TF訓(xùn)練(https://zhuanlan.zhihu.com/p/25597975?group_id=822180572054048768)的用微信監(jiān)控 Tensorflow 訓(xùn)練的項(xiàng)目,很受啟發(fā),決定開(kāi)發(fā)一款用微信監(jiān)控 Keras 訓(xùn)練的插件。歡迎 fork 這個(gè)項(xiàng)目的 GitHub:https://github.com/QuantumLiu/wechat_callback。

原理介紹

本插件基于 python3.5,python2.7 需要將_thread 改為 thread。當(dāng) import 程序文件時(shí),將首先通過(guò) ItChat(https://github.com/littlecodersh/ItChat)在服務(wù)器掃碼登錄微信(網(wǎng)頁(yè)版)。

插件的主體是 sendmessage(),一個(gè) Keras 的 keras.callbacks.Callback() 類,訓(xùn)練時(shí)被傳入 fit() 方法的 callbacklist。在 on_train_begin(self, logs={}) 時(shí),利用 @itchat.msg_register(TEXT) 注冊(cè)針對(duì)不同命令的響應(yīng)方法,啟動(dòng)新線程開(kāi)始實(shí)時(shí)監(jiān)控命令。

對(duì)命令的識(shí)別采用的是 python 的 if any((k in text) for k in cmdlist): 方法,即只要發(fā)送的消息內(nèi)容包含符合條件的關(guān)鍵詞即可出發(fā),冗余字符不影響命令的觸發(fā)。

訓(xùn)練過(guò)程中,由手機(jī)微信與“文件傳輸助手”間的通訊來(lái)實(shí)現(xiàn)命令的傳遞與內(nèi)容反饋。

如圖,“獲取圖表{batches}”和“gpu[MEMORY TEMPERATURE]”是使用者本人發(fā)送的命令,服務(wù)器響應(yīng)命令,以給文件助手發(fā)送消息的方式反饋內(nèi)容(圖表、匯報(bào)和狀態(tài))。

  主要功能

目前已經(jīng)實(shí)現(xiàn)了被動(dòng)監(jiān)控、主動(dòng)查詢、遠(yuǎn)程關(guān)機(jī)/停止訓(xùn)練等多項(xiàng)功能。

1. 實(shí)時(shí)監(jiān)控:在每個(gè)epoch結(jié)束后,自動(dòng)發(fā)送本epoch訓(xùn)練信息以及兩張分別代表所有batch和epoch信息的圖表至文件傳輸助手。

2. 主動(dòng)查詢:在訓(xùn)練開(kāi)始后的任意時(shí)刻,發(fā)送特定格式的指令,可獲得指定查詢項(xiàng)的信息。目前支持 batch 和 epoch 的各個(gè)指標(biāo)的信息、顯卡狀態(tài)信息。

3. 遠(yuǎn)程控制:當(dāng)你覺(jué)得訓(xùn)練已經(jīng)收斂,或者因任何原因需要停止訓(xùn)練時(shí),可以優(yōu)雅地終止訓(xùn)練甚至關(guān)機(jī)。Keras 的 fit 方法中,可以通過(guò)在 callback 設(shè)置 self.model.stop_training = True 來(lái)實(shí)現(xiàn)在當(dāng)前 epoch 結(jié)束時(shí)終止訓(xùn)練,否則只能 Ctrl+C 暴力停止。利用本插件,可以使用特殊格式的指令來(lái)指定停止 epoch、立刻停止訓(xùn)練,甚至關(guān)機(jī)和取消關(guān)機(jī)。

  例子與講解1. 準(zhǔn)備工作

git clone https://github.com/QuantumLiu/wechat_callback.git

cd wechat_callback

需要用到的庫(kù):itchat, keras, numpy, scipy, matplotlib, _thread(py3)

請(qǐng)確保 nvidia-smi 可用,如果 windows 的 cmd 里找不到命令,請(qǐng)手動(dòng)將 nvidia-smi.exe 所在位置添加進(jìn)環(huán)境變量。

  2. 運(yùn)行測(cè)試腳本

python wechat_test.py

解析:

在 wechat_test.py 的開(kāi)頭,首先 import wechat_utils

import wechat_utils #will login automaticly

#wechat_utils.sendmessage()isthe callback class

#wechat_utils.sendmessage()是 keras 的回調(diào)類,fit 時(shí)傳入 callbacklist

在 wechat_utils.py 中:

# Automaticly login when imported

#在被import時(shí)自動(dòng)登錄

 減速機(jī)大全圖片1比2減速機(jī)_減速機(jī)型號(hào)大全圖片

#==============================================================================

itchat.auto_login(enableCmdQR=0.5,hotReload=True)

itchat.dump_login_status()#dump

可以看到,當(dāng) wechat_utils 被 import 時(shí)會(huì)調(diào)用 itchat.auto_login(),不出意外的話,將會(huì)在命令行顯示二維碼,需要使用手機(jī)微信掃碼登錄你的微信賬號(hào)。

在測(cè)試腳本里我使用 numpy.random 來(lái)生成訓(xùn)練數(shù)據(jù),搭建了一個(gè)多層的 FC 網(wǎng)絡(luò)

  model = Sequential()model.add(Dense(2048, input_dim=784))model.add(Activation('relu'))for i in range(9):model.add(Dense(2048))model.add(Activation('relu'))model.add(Dense(1,activation='sigmoid'))x=np.random.rand(nb_sample,dim) y=np.random.randint(2,size=(nb_sample,1))

調(diào)用插件非常簡(jiǎn)單,只需要在 fit 時(shí)把 wechat_utils.sendmessage() 這個(gè) keras 的 Callback 類傳入 Callbacklist。

  model.fit(x=train_x,y=train_y,batch_size=batch_size,nb_epoch=60,validation_data=(val_x,val_y),callbacks=[wechat_utils.sendmessage()])

于是訓(xùn)練開(kāi)始,手機(jī)會(huì)收到如下反饋:

現(xiàn)在,我們可以向它發(fā)送查詢指令,指令一般包括關(guān)鍵詞和參數(shù),以獲取圖表為例,包含以下任意關(guān)鍵詞將被識(shí)別為獲取圖表指令:

  [u'獲取圖表','Show me the figure']

參數(shù)則用{}或[]來(lái)指定,所有的指令均支持不指定參數(shù),獲取圖表的默認(rèn)參數(shù)是查詢所有信息,例如:

‘Show me the figure’ 觸發(fā)了指令,{batches} 表示查詢 batches 級(jí)別信息,[losshinge] 表示查詢 loss 和 hinge 指標(biāo)(一般的,同一屬性參數(shù)用空格隔開(kāi))。

同理,['GPU','gpu',u'顯卡'] 是 gpu 狀態(tài)查詢的關(guān)鍵詞,用[]指定參數(shù),如圖,查詢了 gpu 的顯存和溫度。GPU 參數(shù)是根據(jù) nvidia-smi 的預(yù)置參數(shù)確定的,全部都是大寫,具體可查詢屬性請(qǐng)看 GitHub 的 readme 或者閱讀源碼。

關(guān)機(jī)指令關(guān)鍵詞是 [u'關(guān)機(jī)','Shut down','Shut down the computer',u'別浪費(fèi)電了',u'洗洗睡吧'],使用 {sec} 和 [name] 指定等待時(shí)間和保存文件名,文件名不包括.h5。默認(rèn)保存模型,如果不想保存,可以在消息中包含 [u'不保存模型',"don't save"] 比如:

Shut down now{120},don't save

取消關(guān)機(jī)只需要包含 [u'取消','cancel','aaaa'] 就可以了,也就是說(shuō)如果著急的話打一串 a 發(fā)過(guò)去也是可以的。

立刻停止訓(xùn)練的關(guān)鍵詞是 ['Stopnow',"That's enough",u'停止訓(xùn)練',u'放棄治療'] (《西部世界》看多了)。

  

  指定停止 epoch 的關(guān)鍵詞是 ‘Stop at’,參數(shù)可以直接用整數(shù)表示,不需要 []。

  

  命令與關(guān)鍵詞列表

  1. 遠(yuǎn)程停止訓(xùn)練

關(guān)鍵詞列表:

['Stop now',"That'senough",u'停止訓(xùn)練',u'放棄治療']

說(shuō)明:發(fā)送的消息中包含任意一項(xiàng)都可觸發(fā)命令。將在當(dāng)前epoch結(jié)束后停止訓(xùn)練。無(wú)參數(shù)。

2. 遠(yuǎn)程關(guān)機(jī)

關(guān)鍵詞列表:

 減速機(jī)大全圖片1比2減速機(jī)_減速機(jī)型號(hào)大全圖片

[u'關(guān)機(jī)','Shut down','Shut down the computer',u'別浪費(fèi)電了',u'洗洗睡吧']

說(shuō)明:發(fā)在指定秒數(shù)后關(guān)機(jī),用 {sec} 和 [name] 指定參數(shù)等待時(shí)間和保存文件名,文件名不包括 .h5。如果同時(shí)包含 [u'不保存模型',"don't save"],則不會(huì)保存模型。例:發(fā)送 'Shut down now [test]{120}',電腦將在 120 秒后關(guān)機(jī),將模型保存為 test.h5。若發(fā)送 'Shut down now{120},don't save',則模型將不會(huì)被保存。

3. 取消關(guān)機(jī)

關(guān)鍵詞列表:

[u'取消','cancel','aaaa']

說(shuō)明:發(fā)送的消息中包含任意一項(xiàng)都可觸發(fā)命令。無(wú)參數(shù)。

4. 獲取圖表

關(guān)鍵詞列表:

[u'獲取圖表','Show me the figure']

說(shuō)明:發(fā)送的消息中包含任意一項(xiàng)都可觸發(fā)命令。通過(guò)[metrics] 和{level} 指定參數(shù),如果沒(méi)有指定則皆默認(rèn)為’all'。例:手機(jī)發(fā)送"獲取圖表[loss]{batches}",會(huì)收到一個(gè) jpg 格式的 loss 隨 batches 變化的圖片。手機(jī)發(fā)送"獲取圖表",則會(huì)得到兩張圖片,分別是所有指標(biāo)隨 batch 和 epoch 的變化。

5. 指定訓(xùn)練停止輪數(shù)

關(guān)鍵詞列表:

'Stop at '

參數(shù)可以直接用整數(shù)表示,不需要 []。例:手機(jī)發(fā)送“Stop at:8”,訓(xùn)練將在 epoch8 完成后停止。

6. 查詢顯卡狀態(tài)

關(guān)鍵詞列表:

['GPU','gpu',u'顯卡']

參數(shù)使用 [TYPE] 來(lái)指定,GPU 參數(shù)是根據(jù) nvidia-smi 的預(yù)置參數(shù)確定的,全部都是大寫,在 [] 內(nèi)用空格分隔。

可用參數(shù)列表:

  ['MEMORY', 'UTILIZATION', 'ECC', 'TEMPERATURE','POWER', 'CLOCK', 'COMPUTE', 'PIDS', 'PERFORMANCE','SUPPORTED_CLOCKS,PAGE_RETIREMENT', 'ACCOUNTING']

例:發(fā)送'gpu[MEMORY]'或者'顯卡[MEMORY]'查詢顯存使用;發(fā)送'GPU[MEMORYTEMPERATURE]'查詢顯存和溫度。

  總結(jié)

這個(gè)項(xiàng)目從有想法算起到寫注釋、開(kāi) GitHub、寫知乎不過(guò)兩天半,做的很匆忙也很粗糙,特別是畫圖的細(xì)節(jié)和多線程的處理。

我只是一名阿語(yǔ)專業(yè)大一學(xué)生(休學(xué)ing),水平十分有限,懇請(qǐng)各位多加指點(diǎn),提高我的姿勢(shì)水平,如果這個(gè)項(xiàng)目能給你帶來(lái)一點(diǎn)點(diǎn)便利或者靈感,那么我將感到十分榮幸與欣慰。

再次感謝 @Coldwings 的原創(chuàng)創(chuàng)意。

評(píng)論列表

還沒(méi)有評(píng)論,快來(lái)說(shuō)點(diǎn)什么吧~

發(fā)表評(píng)論

真誠(chéng)期待與您的合作

獲取報(bào)價(jià)·了解更多業(yè)務(wù)·7*24小時(shí)專業(yè)服務(wù)

聯(lián)系我們