国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

寫給開發者的十條機器學習建議

新機器視覺 ? 來源:視學算法 ? 作者:視學算法 ? 2022-12-06 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有時候,作為一個數據科學家,我們常常忘記了初心。我們首先是一個開發者,然后才是研究人員,最后才可能是數學家。我們的首要職責是快速找到無 bug 的解決方案。

我們能做模型并不意味著我們就是神。這并不是編寫垃圾代碼的理由

自從我開始學習機器學習以來,我犯了很多錯誤。因此我想把我認 機器學習工程中最常用的技能分享出來。在我看來,這也是目前這個行業最缺乏的技能。

我稱他們為不懂軟件的數據科學家,因為他們中很大一部分人都沒有系統地學習過計算機科學課程。而我自己也是如此。

如果要選擇雇傭一個偉大的數據科學家和一個偉大的機器學習工程師,我會選擇雇傭后者。

下面開始我的分享。

學習編寫抽象類

一旦開始編寫抽象類,你就能體會到它給帶來的好處。抽象類強制子類使用相同的方法和方法名稱。許多人在同一個項目上工作, 如果每個人去定義不同的方法,這樣做沒有必要也很容易造成混亂。

 1importos
 2fromabcimportABCMeta,abstractmethod
 3
 4
 5classDataProcessor(metaclass=ABCMeta):
 6"""Baseprocessortobeusedforallpreparation."""
 7def__init__(self,input_directory,output_directory):
 8self.input_directory=input_directory
 9self.output_directory=output_directory
10
11@abstractmethod
12defread(self):
13"""Readrawdata."""
14
15@abstractmethod
16defprocess(self):
17"""Processesrawdata.Thisstepshouldcreatetherawdataframewithalltherequiredfeatures.Shouldn'timplementstatisticalortextcleaning."""
18
19@abstractmethod
20defsave(self):
21"""Savesprocesseddata."""
22
23
24classTrainer(metaclass=ABCMeta):
25"""Basetrainertobeusedforallmodels."""
26
27def__init__(self,directory):
28self.directory=directory
29self.model_directory=os.path.join(directory,'models')
30
31@abstractmethod
32defpreprocess(self):
33"""Thistakesthepreprocesseddataandreturnscleandata.Thisismoreaboutstatisticalortextcleaning."""
34
35@abstractmethod
36defset_model(self):
37"""Definemodelhere."""
38
39@abstractmethod
40deffit_model(self):
41"""Thistakesthevectoriseddataandreturnsatrainedmodel."""
42
43@abstractmethod
44defgenerate_metrics(self):
45"""Generatesmetricwithtrainedmodelandtestdata."""
46
47@abstractmethod
48defsave_model(self,model_name):
49"""Thismethodsavesthemodelinourrequiredformat."""
50
51
52classPredict(metaclass=ABCMeta):
53"""Basepredictortobeusedforallmodels."""
54
55def__init__(self,directory):
56self.directory=directory
57self.model_directory=os.path.join(directory,'models')
58
59@abstractmethod
60defload_model(self):
61"""Loadmodelhere."""
62
63@abstractmethod
64defpreprocess(self):
65"""Thistakestherawdataandreturnscleandataforprediction."""
66
67@abstractmethod
68defpredict(self):
69"""Thisisusedforprediction."""
70
71
72classBaseDB(metaclass=ABCMeta):
73"""BasedatabaseclasstobeusedforallDBconnectors."""
74@abstractmethod
75defget_connection(self):
76"""ThiscreatesanewDBconnection."""
77@abstractmethod
78defclose_connection(self):
79"""ThisclosestheDBconnection."""

固定隨機數種子

實驗的可重復性是非常重要的,隨機數種子是我們的敵人。要特別注重隨機數種子的設置,否則會導致不同的訓練 / 測試數據的分裂和神經網絡中不同權重的初始化。這些最終會導致結果的不一致。

1defset_seed(args):
2random.seed(args.seed)
3np.random.seed(args.seed)
4torch.manual_seed(args.seed)
5ifargs.n_gpu>0:
6torch.cuda.manual_seed_all(args.seed)

先加載少量數據

如果你的數據量太大,并且你正在處理比如清理數據或建模等后續編碼時,請使用 `nrows `來避免每次都加載大量數據。當你只想測試代碼而不是想實際運行整個程序時,可以使用此方法。

非常適合在你本地電腦配置不足以處理那么大的數據量, 但你喜歡用 Jupyter/VS code/Atom 開發的場景。


																																	
1f_train=pd.read_csv(‘train.csv’,nrows=1000)

預測失敗 (成熟開發人員的標志)

總是檢查數據中的 NA(缺失值),因為這些數據可能會造成一些問題。即使你當前的數據沒有,并不意味著它不會在未來的訓練循環中出現。所以無論如何都要留意這個問題。


																																	
1print(len(df))
2df.isna().sum()
3df.dropna()
4print(len(df))

顯示處理進度

在處理大數據時,如果能知道還需要多少時間可以處理完,能夠了解當前的進度非常重要。

方案1:tqdm


																																	
 1fromtqdmimporttqdm
 2importtime
 3
 4tqdm.pandas()
 5
 6df['col']=df['col'].progress_apply(lambdax:x**2)
 7
 8text=""
 9forcharintqdm(["a","b","c","d"]):
10time.sleep(0.25)
11text=text+char

方案2:fastprogress


																																	
1fromfastprogress.fastprogressimportmaster_bar,progress_bar
2fromtimeimportsleep
3mb=master_bar(range(10))
4foriinmb:
5forjinprogress_bar(range(100),parent=mb):
6sleep(0.01)
7mb.child.comment=f'secondbarstat'
8mb.first_bar.comment=f'firstbarstat'
9mb.write(f'Finishedloop{i}.')

解決 Pandas 慢的問題

如果你用過 pandas,你就會知道有時候它的速度有多慢ーー尤其在團隊合作時。與其絞盡腦汁去尋找加速解決方案,不如通過改變一行代碼來使用 modin。


																																	
1importmodin.pandasaspd

記錄函數的執行時間

并不是所有的函數都生來平等。

即使全部代碼都運行正常,也并不能意味著你寫出了一手好代碼。一些軟錯誤實際上會使你的代碼變慢,因此有必要找到它們。使用此裝飾器記錄函數的時間。

 1importtime
 2
 3deftiming(f):
 4"""Decoratorfortimingfunctions
 5Usage:
 6@timing
 7deffunction(a):
 8pass
 9"""
10
11
12@wraps(f)
13defwrapper(*args,**kwargs):
14start=time.time()
15result=f(*args,**kwargs)
16end=time.time()
17print('function:%rtook:%2.2fsec'%(f.__name__,end-start))
18returnresult
19returnwrapp

																																	

不要在云上燒錢

沒有人喜歡浪費云資源的工程師。

我們的一些實驗可能會持續數小時。跟蹤它并在完成后關閉云實例是很困難的。我自己也犯過錯誤,也看到過有些人會有連續幾天不關機的情況。

這種情況經常會發生在我們周五上班,留下一些東西運行,直到周一回來才意識到。

只要在執行結束時調用這個函數,你的屁股就再也不會著火了!

使用 `try` 和 `except` 來包裹 main 函數,一旦發生異常,服務器就不會再運行。我就處理過類似的案例

讓我們多一點責任感,低碳環保從我做起。

 1importos
 2
 3defrun_command(cmd):
 4returnos.system(cmd)
 5
 6defshutdown(seconds=0,os='linux'):
 7"""Shutdownsystemaftersecondsgiven.UsefulforshuttingEC2tosavecosts."""
 8ifos=='linux':
 9run_command('sudoshutdown-h-tsec%s'%seconds)
10elifos=='windows':
11run_command('shutdown-s-t%s'%seconds)

創建和保存報告

在建模的某個特定點之后,所有的深刻見解都來自于對誤差和度量的分析。確保為自己和上司創建并保存格式正確的報告。

不管怎樣,管理層都喜歡報告,不是嗎?

 1importjson
 2importos
 3
 4fromsklearn.metricsimport(accuracy_score,classification_report,
 5confusion_matrix,f1_score,fbeta_score)
 6
 7defget_metrics(y,y_pred,beta=2,average_method='macro',y_encoder=None):
 8ify_encoder:
 9y=y_encoder.inverse_transform(y)
10y_pred=y_encoder.inverse_transform(y_pred)
11return{
12'accuracy':round(accuracy_score(y,y_pred),4),
13'f1_score_macro':round(f1_score(y,y_pred,average=average_method),4),
14'fbeta_score_macro':round(fbeta_score(y,y_pred,beta,average=average_method),4),
15'report':classification_report(y,y_pred,output_dict=True),
16'report_csv':classification_report(y,y_pred,output_dict=False).replace('
','
')
17}
18
19
20defsave_metrics(metrics:dict,model_directory,file_name):
21path=os.path.join(model_directory,file_name+'_report.txt')
22classification_report_to_csv(metrics['report_csv'],path)
23metrics.pop('report_csv')
24path=os.path.join(model_directory,file_name+'_metrics.json')
25json.dump(metrics,open(path,'w'),indent=4)

寫出一手好 API

結果不好,一切都不好。

你可以做很好的數據清理和建模,但是你仍然可以在最后制造巨大的混亂。通過我與人打交道的經驗告訴我,許多人不清楚如何編寫好的 api、文檔和服務器設置。我將很快寫另一篇關于這方面的文章,但是先讓我簡要分享一部分。

下面的方法適用于經典的機器學習 和 深度學習部署,在不太高的負載下(比如1000 / min)。

見識下這個組合: Fastapi + uvicorn + gunicorn

  • 最快的ー用 fastapi 編寫 API,因為是最快的,原因參見這篇文章
  • 文檔ー在 fastapi 中編寫 API 為我們提供了 http: url/docs 上的免費文檔和測試端點,當我們更改代碼時,fastapi 會自動生成和更新這些文檔。
  • workerー使用 gunicorn 服務器部署 API,因為 gunicorn 具有啟動多于1個 worker,而且你應該保留至少 2 個worker。
運行這些命令來使用 4 個 worker 部署。可以通過負載測試優化 worker 數量。
1pipinstallfastapiuvicorngunicorn
2gunicorn-w4-kuvicorn.workers.UvicornH11Workermain:app


審核編輯 :李倩


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

    關注

    14

    文章

    10253

    瀏覽量

    91500
  • API
    API
    +關注

    關注

    2

    文章

    2372

    瀏覽量

    66790
  • 機器學習
    +關注

    關注

    66

    文章

    8553

    瀏覽量

    136962

原文標題:寫給開發者的 10 條機器學習建議

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    進迭時空2025年度十大開發者揭曉

    、參與度與影響力三大維度,榮幸地評選出進迭時空2025年度十大開發者。他們憑借扎實的工程能力和持續突破的極客精神,為社區的的成長添磚加瓦,為RISC-V和AI的生態
    的頭像 發表于 01-12 20:07 ?626次閱讀
    進迭時空2025年度<b class='flag-5'>十大開發者</b>揭曉

    2025華為開發者大賽暨開發者年度會議成功舉辦

    12月27日-12月28日,以“成就AI原生時代先鋒開發者”為主題的2025華為開發者大賽暨開發者年度會議在上海華為練秋湖研發中心舉辦。本次會議旨在匯聚先鋒開發力量,搭建開放共贏的生態
    的頭像 發表于 12-31 13:32 ?679次閱讀

    NVIDIA Jetson系列開發者套件助力打造面向未來的智能機器

    NVIDIA Jetson AGX Thor、AGX Orin 以及 Jetson Orin Nano Super 開發者套件,助力打造面向未來的智能機器人。
    的頭像 發表于 12-13 10:20 ?3066次閱讀

    2025開源鴻蒙開發者激勵計劃正式啟動

    11月21日,2025開放原子開發者大會盛大啟幕,聚焦“AI共智,開源共享”主題,吸引了來自全球的開發者、企業技術領袖、社區維護及高校科研力量參會。作為大會的重要組成部分,開源鴻蒙技術分論壇同期
    的頭像 發表于 11-27 14:44 ?677次閱讀

    廣和通亮相DDC 2025地瓜機器開發者大會

    11月21日,DDC2025地瓜機器開發者大會在深圳順利舉行。大會匯聚來自機器人全產業鏈的技術團隊、生態伙伴與開發者,共同探討機器人技術的
    的頭像 發表于 11-26 15:49 ?490次閱讀
    廣和通亮相DDC 2025地瓜<b class='flag-5'>機器</b>人<b class='flag-5'>開發者</b>大會

    元服務發布配置開發者服務信息

    您作為開發者的相關信息將面向元服務發布區域的用戶公開,其中客服聯系方式可能會提供給用戶,用于咨詢相關問題。 登錄AppGallery Connect,點擊“APP與元服務”。 選擇要發布的元服務
    發表于 10-31 17:58

    2025開放原子開發者大會11月啟幕

    開發者年度盛會即將登場!2025開放原子開發者大會將于11月21-22日,在北京北人亦創國際會展中心盛大召開。大會以“一切為了開發者”為主題,匯聚全球開源智慧——國內外優秀開發者、學術
    的頭像 發表于 10-24 14:05 ?962次閱讀

    華為云與開發者共贏AI未來

    ,與開發者共贏”主題演講,詳細闡述了華為云生態的最新進展,并宣布華為開發者空間全面升級,全新集成多種AI原生應用開發能力。
    的頭像 發表于 09-20 15:58 ?1670次閱讀

    NVIDIA DRIVE AGX Thor開發者套件重磅發布

    這款由 NVIDIA DriveOS 7 驅動的開發者套件能夠幫助開發者們打造出更安全的智能汽車和交通解決方案。
    的頭像 發表于 09-04 11:20 ?1386次閱讀

    曙光網絡SugonRI開發者社區正式上線

    (sugonri.sugon.com),面向使用及計劃使用SugonRI的開發者,打造一個集學習、交流、案例分享與應用實踐于一體的開放平臺。
    的頭像 發表于 09-04 09:58 ?962次閱讀

    超過200萬開發者加入NVIDIA機器人技術生態

    已經有超過 200 萬開發者加入 NVIDIA 機器人技術生態系統。這些開發者正在推動制造業、食品配送、農業、醫療健康、設施維護等眾多行業的變革。 自 2014 年 NVIDIA Jetson 平臺
    的頭像 發表于 08-21 19:47 ?1961次閱讀
    超過200萬<b class='flag-5'>開發者</b>加入NVIDIA<b class='flag-5'>機器</b>人技術生態

    矽速科技正式入駐 RuyiSDK 開發者社區,共建 RISC-V 開發者生態!

    近日,深圳矽速科技正式入駐RuyiSDK開發者社區,攜手社區共同推動RISC-V技術的發展與廣泛應用,為開發者提供一個更加便捷高效的開發環境。關于RuyiSDKRuyiSDK是中國科學院軟件研究所
    的頭像 發表于 07-10 11:00 ?1175次閱讀
    矽速科技正式入駐 RuyiSDK <b class='flag-5'>開發者</b>社區,共建 RISC-V <b class='flag-5'>開發者</b>生態!

    HDC 2025開發者主題演講精彩回顧

    日前,華為開發者大會(HDC 2025)進入第二天,行業領袖、技術專家、全球開發者齊聚現場,共同見證這場科技盛會。在開發者主題演講中,華為技術專家深入解析HarmonyOS的最新技術、體驗創新以及
    的頭像 發表于 07-09 11:20 ?1318次閱讀

    NVIDIA Isaac Sim和Isaac Lab現已推出早期開發者預覽版

    NVIDIA 發布了機器人仿真參考應用 Isaac Sim 和機器人學習框架 Isaac Lab 的開發者預覽版。開發者現在可以通過 GitHub 訪問早期版本,搶先體驗先進功能,用于
    的頭像 發表于 07-04 14:23 ?1811次閱讀

    深開鴻CEO王成錄:開發者是開源鴻蒙生態的原點

    5月24日,深開鴻正式發布全國首款面向開發者的開源鴻蒙學習平臺——開鴻Bot系列產品。這是開源鴻蒙在開發者終端領域的關鍵落地,更是深開鴻貫徹“以開發者為中心”理念的里程碑舉措。深開鴻C
    的頭像 發表于 05-26 12:06 ?885次閱讀
    深開鴻CEO王成錄:<b class='flag-5'>開發者</b>是開源鴻蒙生態的原點