如何在后台部署深度学习模型 深度学习中利用caffe如何训练自己的模型

\u5982\u4f55\u4ece\u96f6\u4f7f\u7528 Keras + TensorFlow \u5f00\u53d1\u4e00\u4e2a\u590d\u6742\u6df1\u5ea6\u5b66\u4e60\u6a21\u578b

\u6700\u8fd1\u521a\u5f00\u59cb\u4f7f\u7528theano, \u7ecf\u9a8c\u4e0d\u591a\uff0c\u8fde\u4e2a\u57fa\u672c\u7684\u6a21\u578b\u90fd\u8dd1\u4e0d\u901a\uff0c\u4e8e\u662f\u53bb\u770b\u4e86\u4e0bKeras\uff0c\u6e90\u7801\u6bd4\u8f83\u7b80\u6d01\uff0c\u53ef\u4ee5\u5f53\u4f5ctheano\u7684\u793a\u4f8b\u6559\u7a0b\u6765\u770b\uff0c\u611f\u53d7\u5982\u4e0b\uff1a
\u6587\u6863\u770b\u4f3c\u5f88\u5168\uff0c\u6bcf\u4e2alayer\u662f\u5e72\u5565\u7684\uff0c\u6bcf\u4e2a\u53c2\u6570\u662f\u5565\u90fd\u5199\u4e86\uff0c\u4f46\u662f\u4e0d\u53bb\u8bfb\u4ee3\u7801\uff0c\u5b9e\u9645\u5f88\u591a\u4eba\u662f\u65e0\u6cd5\u4ece\u6587\u6863\u7406\u89e3\u5176\u5177\u4f53\u7528\u6cd5\u7684\u3002\u8fd9\u70b9\u770bissue\u91cc\u7684\u8ba8\u8bba\u91cc\u53ef\u4ee5\u770b\u51fa\u3002\u540c\u6837\uff0cexample\u4f3c\u4e4e\u5f88\u591a\uff0c\u800c\u4e14\u90fd\u80fd\u76f4\u63a5run\uff0c\u8fd8\u90fd\u662freal world\u7684\u6570\u636e\u96c6\uff0c\u770b\u4f3c\u5f88\u597d\uff0c\u4f46\u662f\u5b9e\u9645\u4e0a\uff0c\u5bf9\u4e8e\u65b0\u624b\uff0c\u5982\u679c\u9700\u8981\u7684\u6a21\u578b\u8ddfexample\u91cc\u7684\u4e0d\u5b8c\u5168\u4e00\u6837\uff0c\u4e0d\u5bb9\u6613\u641e\u61c2\u5230\u5e95\u9700\u8981\u628a\u8f93\u5165\u8f93\u51fa\u7684\u6570\u636e\u641e\u6210\u5565\u683c\u5f0f\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0cexample\u90fd\u662f\u505a\u7684classification\u7684\uff0c\u6ca1\u6709\u505asequence labeling\u7684\u4f8b\u5b50\uff0c\u5982\u679c\u60f3\u62ff\u6765\u505a\u4e2apos tagging\uff0c\u4e0d\u77e5\u9053\u6570\u636e\u5982\u4f55\u7ec4\u7ec7\u3002\u5f53\u7136\uff0c\u8fd9\u4e9b\u5176\u5b9e\u82b1\u4e00\u5929\u8bfb\u4e0b\u4ee3\u7801\u6216\u8005\u597d\u597d\u7ffb\u7ffbissue\u8ba8\u8bba\u5c31\u53ef\u4ee5\u89e3\u51b3\u4e86\uff0c\u4f46\u6211\u76f8\u4fe1\u4e0d\u5c11\u4eba\u4e0d\u4f1a\u53bb\u8ba4\u771f\u8bfb\u4ee3\u7801\u6216\u8005\u770b\u8ba8\u8bba\uff0c\u800c\u662f\u76f4\u63a5\u6362\u4e2a\u5de5\u5177\u3002\u6211\u611f\u89c9\u76ee\u524d\u7684doc\u53ea\u6709\u61c2\u4e86\u4ee3\u7801\u7684\u4eba\u624d\u80fd\u770b\u61c2\uff0c\u4e0d\u61c2\u5f97\u770b\u6587\u6863\u8fd8\u662f\u6ca1\u5565\u7528\u3002
2.\u9879\u76ee\u5f88\u7b80\u5355\u6240\u4ee5\u5f00\u53d1\u8005\u4e0d\u591a\uff0c\u4f46\u662f\u5f88\u6d3b\u8dc3\uff0c\u6bcf\u5929\u90fd\u6709\u65b0\u4e1c\u897f\u52a0\u8fdb\u53bb\u3002\u4eca\u5929\u589e\u52a0\u4e86\u4e00\u4e2a\u65b0\u7684\u5206\u652f\u540e\u7aef\u53ef\u4ee5\u7528theano\u6216\u8005tensorflow\u4e86\uff0c\u4e0d\u8fc7\u8c8c\u4f3c\u7531\u4e8e\u4e0d\u652f\u6301scan\uff0cbackend\u7528tensorflow\u7684\u6ca1\u5b9e\u73b0recurrent layer\u3002\u4ed6\u4eec\u4e5f\u610f\u8bc6\u5230\u6587\u6863\u7684\u95ee\u9898\uff0c\u89c9\u5f97\u9700\u8981\u4e3a\u5c0f\u767d\u7528\u6237\u591a\u52a0\u70b9tutorial\u800c\u4e0d\u662f\u5149\u7ed9develop\u770b\u3002
\u6211\u6ca1\u7528\u8fc7\u5176\u4ed6\u7684framework\uff0c\u4ec5\u8bf4keras\u62ff\u6765\u5b66\u4e60theano\u57fa\u672c\u7528\u6cd5\uff0c\u5f88\u4e0d\u9519
\u5e93\u672c\u8eab\u7684\u4ee3\u7801\uff0c\u6bd4\u8f83\u7b80\u5355\u6613\u8bfb\uff0c\u6211\u4f5c\u4e3apython\u83dc\u9e1f\uff0c\u4e5f\u80fd\u770b\u61c2\u3002\u76ee\u524dmodel\u6709sequential\u548cgrapgh\u4e24\u79cd\uff0c\u524d\u8005\u5e76\u4e0d\u662f\u6307recurrent\u800c\u662f\u8bf4\u7f51\u7edc\u662f\u4e00\u5c42\u5c42\u5806\u7684\uff08\u4e5f\u5305\u62ecrecurrent\uff09.\u5176\u4ed6\u7684\u4e3b\u8981\u6982\u5ff5\u5305\u62eclayer\uff0cregularizer, optimizer,objective\u90fd\u5206\u79bb\u5f00\u3002layer\u7528\u4e8ebuild\u6bcf\u5c42\u7684\u8f93\u51fa\u51fd\u6570\uff0cmodel\u4f1a\u7528\u6700\u540e\u4e00\u5c42\u7684\u8f93\u51fa\uff0c\u6839\u636eobjective\u548c\u6bcf\u4e2alayer\u7684regularizer\u6765\u786e\u5b9a\u6700\u7ec8\u7684cost\uff0c\u7136\u540e\u5728update\u65f6\u7528optimizer\u6765\u66f4\u65b0\u53c2\u6570\u3002\u628a\u8fd9\u56db\u4e2a\u770b\u4e0b\u52a0\u4e0amodel\u91cc\u7684fit\u51fd\u6570\uff0c\u5c31\u4f1a\u7528theano\u5566\u3002\u5f88\u591a\u6a21\u578b\u90fd\u80fdcover\uff0cseq2seq\u8fd9\u79cd\u4e5f\u6709\u73b0\u6210\u7684\u53ef\u7528\u3002\u5efa\u8bae\u4e0d\u8981\u5149\u770bexample\uff0c\u591a\u770b\u770bgithub\u4e0a\u7684 issues\u8ba8\u8bba\uff0c\u5b9e\u5728\u627e\u4e0d\u5230\uff0c\u76f4\u63a5\u63d0\u95ee\u3002\u6548\u7387\u65b9\u9762\uff0c\u6211\u4e0d\u61c2theano\u600e\u4e48\u4f18\u5316\uff0c\u611f\u89c9keras\u7684\u8fd9\u79cd\u5c01\u88c5\uff0c\u6ca1\u4ec0\u4e48\u6210\u672c\uff0c\u8ddf\u81ea\u5df1\u7528\u539f\u751ftheano\u662f\u4e00\u6837\u7684\u3002\u5f53\u7136\uff0ctheano\u672c\u8eab\u5c31\u597d\u6162\u554a\u3002\u3002\u4f30\u8ba1\u662f\u6211\u4e0d\u61c2\u7528\u5427\u3002\u3002

\u4f5c\u8005\uff1a\u5723\u884c
\u94fe\u63a5\uff1ahttps://www.zhihu.com/question/30091667/answer/47951446
\u6765\u6e90\uff1a\u77e5\u4e4e
\u8457\u4f5c\u6743\u5f52\u4f5c\u8005\u6240\u6709\uff0c\u8f6c\u8f7d\u8bf7\u8054\u7cfb\u4f5c\u8005\u83b7\u5f97\u6388\u6743\u3002


matlab \u548cpython\u6ca1\u6709\u7528\u8fc7\u3002\u5982\u679c\u662f\u4e60\u60ef\u7528opencv\u7684\u8bdd\uff0c\u53ef\u4ee5\u4f7f\u7528memory_data\uff0c\u8bf7\u53c2\u8003\u8fd9\u4e2a\u94fe\u63a5\u91cc\u7684\u4f8b\u5b50\uff1aC++ Image Classification with memory_data_param \u00b7 Issue #1443 \u00b7 BVLC/caffe \u00b7 GitHub

\u7ed9\u4e00\u4e2a\u5177\u4f53\u70b9\u7684\u4f8b\u5b50\u5427\uff08\u4e0d\u77e5\u9053\u8d34\u4ee3\u7801\u662f\u4e0d\u662f\u6709\u70b9\u4e0d\u5408\u77e5\u4e4e\u6c14\u8d28\uff1f\uff09\uff0c\u603b\u5171\u5206\u4e09\u6b65\uff1a
\u7b2c\u4e00\u6b65\uff0c\u6784\u9020\u7f51\u7edc\uff1a
enum Phase p = TEST;
Net caffe_test_net(argv[1],p);
caffe_test_net.CopyTrainedLayersFrom(argv[2]);

\u7b2c\u4e8c\u6b65\uff0c\u6784\u9020\u6570\u636e\u5e76\u52a0\u5165\u5230\u7f51\u7edc\u8f93\u5165\u5c42\uff1a
//create the input data
vector md_images;
vector md_labels;
//////operations for the input data
Mat original = imread("images\\lena_gray.png"); //\u968f\u4fbf\u7684\u56fe\u7247\uff0c\u6ca1\u6709\u5b9e\u7528\u610f\u4e49\uff0c\u53ef\u5ffd\u7565

Mat *sub_img = new Mat;
for (int i = 0; i < 10; i++){
original(Range(i, i + 28), Range(i, i + 28)).copyTo(*sub_img); // 28x28\uff0c\u53ef\u4ee5\u76f4\u63a5\u7528lenet
md_images.push_back(*sub_img);
md_labels.push_back(0);
}

\u7b2c\u4e09\u6b65\uff0c\u6267\u884ctest\u64cd\u4f5c\uff1a
for (int i = 0; i < 10; i++){
const vector*>& result = caffe_test_net.ForwardPrefilled();

搭建深度学习后台服务器

我们的Keras深度学习REST API将能够批量处理图像,扩展到多台机器(包括多台web服务器和Redis实例),并在负载均衡器之后进行循环调度。

为此,我们将使用:



  • 濡備綍鍦ㄥ悗鍙伴儴缃叉繁搴﹀涔犳ā鍨
    绛旓細鐒跺悗,鎴戜滑灏嗛氳繃瀹夎鎵闇鐨凱ython鍖呮潵閰嶇疆Python寮鍙戠幆澧,浠ユ瀯寤烘垜浠殑Keras娣卞害瀛︿範REST API銆備竴鏃﹂厤缃簡寮鍙戠幆澧,灏卞彲浠ヤ娇鐢‵lask web妗嗘灦瀹炵幇瀹為檯鐨凨eras娣卞害瀛︿範REST API銆傚湪瀹炵幇涔嬪悗,鎴戜滑灏嗗惎鍔≧edis鍜孎lask鏈嶅姟鍣,鐒跺悗浣跨敤cURL鍜孭ython鍚戞垜浠殑娣卞害瀛︿範API绔偣鎻愪氦鎺ㄧ悊璇锋眰銆傛渶鍚,鎴戜滑灏嗕互瀵规瀯寤鸿嚜宸辩殑娣卞害瀛︿範REST API...
  • 璁粌濂界殑娣卞害瀛︿範妯″瀷鏄鎬庝箞閮ㄧ讲鐨?
    绛旓細纭欢鏂归潰锛岃鏍规嵁妯″瀷璁$畻閲忓拰鏃跺欢瑕佹眰锛岀粨鍚堟垚鏈拰鍔熻楄姹傦紝閫夊悎閫傜殑宓屽叆寮忓钩鍙銆傛瘮濡傛ā鍨嬭绠楅噺澶х殑锛屽彲鑳藉氨瑕侀夋嫨甯PU鐨凷oC锛岀敤opencl/opengl/vulkan缂栫▼锛涗篃鍙互璇曡瘯NPU锛屼笉杩囩幇鍦∟PU鏀寔鐨勭畻瀛愪笉澶氾紝涓浜涜嚜瀹氫箟Op澶氱殑缃戠粶鍙兘閮ㄧ讲涓嶄笂鍘诲浜庡皬妯″瀷锛屾垨鑰呭抚鐜囪姹備笉楂樼殑锛屽彲鑳界敤CPU灏卞浜嗭紝涓嶈繃涓鑸渶...
  • 瀹為獙瀹ゆ病鏈夋湇鍔″櫒濡備綍璺娣卞害瀛︿範妯″瀷
    绛旓細瀹為獙瀹ゆ病鏈夋湇鍔″櫒鍙互鐢℅ooglecolab璺娣卞害瀛︿範妯″瀷銆傚叿浣撴搷浣滄楠ゅ涓嬶細1銆佸垱寤篶olab鏂囦欢锛氳繘鍏oogle浜戠洏鍚庯紝鍒涘缓涓涓猚olab鏂囦欢銆傜涓娆′娇鐢紝浼氬瓨鍦╟olab閫夐」涓嶆樉绀虹殑鎯呭喌锛岀偣鍑诲叧鑱旀洿澶氬簲鐢ㄥ嵆鍙傜偣鍑籧olab閫夐」鍚庝細璺宠浆鍒颁竴涓〉闈紝涓巎upyter鍩烘湰涓妯′竴鏍凤紝鍙緭鍏ヤ唬鐮佹锛岃兘杩炴帴鏈嶅姟鍣紝鏈夋枃浠剁洰褰曘乧olab鏂...
  • 鍗风Н绁炵粡缃戠粶妯″瀷鎬庝箞閮ㄧ讲鍒皐en绔
    绛旓細2銆佸埄鐢╓eb妗嗘灦鍔犺浇鍗风Н绁炵粡缃戠粶妯″瀷銆傜洰鍓嶏紝璁稿Web妗嗘灦閮芥敮鎸佸皢娣卞害瀛︿範妯″瀷閮ㄧ讲鍒癢eb绔紝濡俆ensorFlow.js鍜孠eras.js绛夈傞氳繃杩欎簺妗嗘灦锛屾垜浠彲浠ヨ交鏉惧湴灏咰NN妯″瀷閮ㄧ讲鍒癢eb娴忚鍣ㄤ腑銆3銆佸垱寤篧eb椤甸潰骞跺埄鐢↗avaScript璋冪敤妯″瀷銆傚湪Web椤甸潰涓姞杞紺NN妯″瀷锛屽苟閫氳繃JavaScript缂栧啓浠g爜鏉ヨ皟鐢ㄨ妯″瀷锛岃緭鍏ユ暟鎹苟鑾峰彇杈撳嚭...
  • 濡備綍鍦鐢佃剳涓婅繘琛娣卞害瀛︿範
    绛旓細瀛︿範娣卞害瀛︿範闇瑕佹湁涓鍙版ц兘寮哄ぇ鐨勭數鑴戯紝鍦ㄨ繘琛妯″瀷璁粌鏃堕渶瑕佸ぇ閲忚绠楄祫婧愩傞偅涔濡備綍鍦鐢佃剳涓婅繘琛屾繁搴﹀涔犲憿锛熺涓姝ユ槸閫夋嫨鍚堥傜殑璁$畻鏈洪厤缃傞氬父闇瑕佷竴鍙板叿鏈夎壇濂藉浘褰㈠鐞嗗櫒锛圙PU锛夊拰澶у閲忓唴瀛樼殑璁$畻鏈猴紝姣斿8GB鎴栦互涓婄殑鍐呭瓨鍜孨VIDIAGeForce鎴朅MDRadeon绯诲垪鐨凣PU銆傚綋鐒讹紝濡傛灉浣犵殑棰勭畻杈冮珮锛屽彲浠ラ夋嫨鐩稿簲鏇撮珮...
  • 瀹夊崜閮ㄧ讲娣卞害瀛︿範妯″瀷鏃濡備綍鏋勫缓杈撳叆鏁版嵁
    绛旓細1銆侀鍏堥殢渚垮啓涓涓猵ytroch妯″瀷骞惰浆涓簅nnx妯″瀷銆2銆佸叾娆″垱寤篘ative C++椤圭洰銆3銆佹渶鍚庢鏌ヨ緭鍏ワ紝瀹夊崜閮ㄧ讲娣卞害瀛︿範妯″瀷鏃跺嵆鍙瀯寤鸿緭鍏ユ暟鎹
  • 濡備綍鍦寰俊灏忕▼搴閮ㄧ讲绁炵粡缃戠粶妯″瀷
    绛旓細璇ュ皬绋嬪簭閮ㄧ讲绁炵粡缃戠粶妯″瀷鏂规硶濡備笅锛1銆佺‘瀹氱缁忕綉缁滄ā鍨嬶細閫夋嫨涓涓凡缁忚缁冨ソ鐨勭缁忕綉缁滄ā鍨嬶紝鍙互浣跨敤TensorFlow鎴朘eras绛娣卞害瀛︿範妗嗘灦杩涜璁粌銆2銆佽浆鎹㈡ā鍨嬫牸寮忥細灏嗚缁冨ソ鐨勬ā鍨嬭浆鎹负寰俊灏忕▼搴忔敮鎸佺殑鏍煎紡锛屽彲浠ヤ娇鐢═ensorFlow.js鎴朤FLite绛夊伐鍏疯繘琛岃浆鎹3銆佹墦鍖呮ā鍨嬶細灏嗚浆鎹㈠悗鐨勬ā鍨嬫墦鍖呮垚寰俊灏忕▼搴忔敮鎸...
  • 濡備綍浠庨浂浣跨敤 Keras + TensorFlow 寮鍙戜竴涓鏉娣卞害瀛︿範妯″瀷?
    绛旓細Keras 鏄彁渚涗竴浜涢珮鍙敤鐨 Python API 锛岃兘甯姪浣犲揩閫熺殑鏋勫缓鍜岃缁冭嚜宸辩殑娣卞害瀛︿範妯″瀷锛屽畠鐨勫悗绔槸 TensorFlow 鎴栬 Theano 銆傛湰鏂囧亣璁句綘宸茬粡鐔熸倝浜 TensorFlow 鍜屽嵎绉缁忕綉缁滐紝濡傛灉锛屼綘杩樻病鏈夌啛鎮夛紝閭d箞鍙互鍏堢湅鐪嬭繖涓10鍒嗛挓鍏ラ棬 TensorFlow 鏁欑▼鍜屽嵎绉缁忕綉缁滄暀绋嬶紝鐒跺悗鍐嶅洖鏉ラ槄璇昏繖涓枃绔犮傚湪杩欎釜鏁欑▼涓紝...
  • 濡備綍鍦ㄦ繁搴绯荤粺涓婂畨瑁呭拰浣跨敤娣卞害瀛︿範鐩稿叧鐨勮蒋浠跺拰宸ュ叿
    绛旓細浣犲彲浠ュ湪瀹樼綉涓婁笅杞絘naconda銆傛渶鍚庯紝浣犻渶瑕佷竴涓狦PU銆娣卞害瀛︿範璁粌閫氬父闇瑕佸ぇ閲忕殑璁$畻璧勬簮锛屽洜姝や娇鐢ㄤ竴涓己澶х殑GPU鍙互鏄捐憲鍔犲揩璁粌閫熷害銆傚鏋滀綘娌℃湁GPU锛屽垯鍙互浣跨敤浜戝钩鍙帮紝濡侫WS銆丄zure鎴朑oogleCloud绛夈備簩銆佸畨瑁匱ensorFlow鍦ㄥ畨瑁匱ensorFlow涔嬪墠锛屼綘闇瑕佸畨瑁匔UDA鍜宑uDNN銆侰UDA鏄疦VIDIA寮鍙戠殑骞惰璁$畻骞冲彴鍜岀紪绋妯...
  • 濡備綍鏋勫缓娣卞害瀛︿範棰勮缁妯″瀷?
    绛旓細鍙互鐩存帴鍏堟壘鍒拌嚜宸遍渶瑕佺殑璁粌妯″瀷锛屼竴鑸潵璇撮兘鍙互鎵惧埌鐨
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网