日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

django调用java_07.手把手教将深度学习利用Django将模型发布成服务供java调用

發(fā)布時(shí)間:2024/7/23 pytorch 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django调用java_07.手把手教将深度学习利用Django将模型发布成服务供java调用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

標(biāo)題

問題

一.python發(fā)布成服務(wù)

1.先建立一個(gè)深度學(xué)習(xí)模型并訓(xùn)練好

2.建立一個(gè)預(yù)測方法去調(diào)用訓(xùn)練好的模型

3.建立一個(gè)Django工程

4.將python利用模型預(yù)測的代碼放入Django項(xiàng)目中

5.get請求加上參數(shù)

6.github

二.JAVA請求url,返回json數(shù)據(jù)

問題

python作為一個(gè)含科學(xué)計(jì)算與深度學(xué)習(xí)以及機(jī)器學(xué)習(xí)包豐富的語言,自然收到從事算法工作的大佬的青睞,java往往在這一塊欠缺,可以利用java做深度學(xué)習(xí),但是特別麻煩,現(xiàn)在學(xué)習(xí)深度學(xué)習(xí)的基本人人都會(huì)點(diǎn)python,但是往往在實(shí)際項(xiàng)目中由于各種原因,java依舊是web開發(fā)的主力,網(wǎng)上一些做法就是直接將java在程序里面調(diào)用python程序,但是這樣的話會(huì)出各種不兼容和版本的問題,我覺得最好是將深度學(xué)習(xí)模型預(yù)測這塊的代碼用Django發(fā)布成一個(gè)服務(wù)然后供java這邊通過url調(diào)用。

一.python發(fā)布成服務(wù)

1.先建立一個(gè)深度學(xué)習(xí)模型并訓(xùn)練好

BiLSTM+CRF模型構(gòu)建

inputs = Input(shape=(MAX_LEN,), dtype='int32')

x = Masking(mask_value=0)(inputs)

x = Embedding(VOCAB_SIZE, EMBED_DIM, mask_zero=True)(x)

x = Bidirectional(LSTM(HIDDEN_SIZE, return_sequences=True))(x)

x = TimeDistributed(Dense(CLASS_NUMS))(x)

outputs = CRF(CLASS_NUMS)(x)

model = Model(inputs=inputs, outputs=outputs)

model.summary()

比如我這是先建立了一個(gè)命名實(shí)體識別的深度學(xué)習(xí)模型,用keras建立的,并訓(xùn)練生成模型ch_ner_model4.h5,模型建立如上所示,具體代碼請移步github,后面會(huì)貼出。

2.建立一個(gè)預(yù)測方法去調(diào)用訓(xùn)練好的模型

加載模型,具體代碼請移步github,后面會(huì)貼出。

'''用來預(yù)測'''

from keras.models import load_model

import numpy as np

custom_ob = {'CRF': CRF,"crf_loss":crf_loss,"crf_viterbi_accuracy":crf_viterbi_accuracy,"f1":f1}

model = load_model('model/ch_ner_model3.h5', custom_objects=custom_ob)

maxlen = 500

3.建立一個(gè)Django工程

很簡單,pip install Django即可,不過注意版本號,我這用的是3.0以上的。我這采用Anaconda建立的虛擬環(huán)境。

用命令django-admin startproject ner_web_v1建立這個(gè)工程,然后cd進(jìn)去,輸入命令

python3 manage.py runserver 127.0.0.1:8000/。看到下面這個(gè)即啟動(dòng)Django成功.

4.將python利用模型預(yù)測的代碼放入Django項(xiàng)目中

就是圖1中第三個(gè)箭頭的指向建立一個(gè)這樣的預(yù)測代碼,注意文件夾以及文件的位置。可以把所有的模型預(yù)測代碼都封裝在一個(gè)方法里面,然后最終返回的話如果返回json數(shù)據(jù)的話,利用下面的代碼返回json數(shù)據(jù),這樣不僅能返回json數(shù)據(jù)而且中文和字符不會(huì)報(bào)錯(cuò),解決了Django返回json的中文字符亂碼問題。

return HttpResponse(json.dumps(TextLine,ensure_ascii=False), content_type="application/json,charset=utf-8")

在url這里面還要配上路徑,我這隨便配置了hello,右邊的ner.hello就是之前封裝代碼的方法,需要import引入。

5.get請求加上參數(shù)

我這的請求主要需要加上數(shù)據(jù)庫中的id作為請求值。

所以在ner_web_v1加上獲取請求的參數(shù),id = request.GET.get(‘id’, ‘0’)。

請求時(shí)候加上id參數(shù)即可。

6.github

https://github.com/zbelieve/ner

代碼中的數(shù)據(jù)庫表特別簡單可以自己建立一個(gè),TX_TEXT是一些純文本文章。傳的id就是TM_ID。

里面的路徑比如字典和模型路徑,改成自己本機(jī)的絕對路徑即可。有用的話,麻煩賞個(gè)星。我也是邊學(xué)邊做,講的不對的勿噴。

二.JAVA請求url,返回json數(shù)據(jù)

java這塊在測試包中利用restTemplate發(fā)送請求,即可獲取之前python發(fā)布服務(wù)后傳的json數(shù)據(jù)

@SpringBootTest

@RunWith(SpringRunner.class)

public class testRestTemplate {

@Autowired

RestTemplate restTemplate;

@Test

//測試遠(yuǎn)程連接獲取模型數(shù)據(jù),這個(gè)就是模型+數(shù)據(jù)中的數(shù)據(jù)

public void testRestTemplate(){

// 封裝參數(shù),這里是HashMap

Map paramMap = new HashMap();

paramMap.put("id", "11111111");

//測試這個(gè)的時(shí)候要把服務(wù)器開了

//url請求返回的是json數(shù)據(jù),之后在這兒轉(zhuǎn)換map,就是鍵值對類型的,這兒獲取的遠(yuǎn)程訪問的數(shù)據(jù)是cmsconfig的數(shù)據(jù),主要想獲取他的圖片數(shù)據(jù)在服務(wù)器的url,靜態(tài)化分為模板和數(shù)據(jù),這兒就是獲得動(dòng)態(tài)的數(shù)據(jù)

//ResponseEntityforEntity = restTemplate.getForEntity("http://localhost:31001/cms/config/getmodel/5a791725dd573c3574ee333f", Map.class);

ResponseEntity forEntity2 = restTemplate.getForEntity("http://127.0.0.1:8000/hello?id={id}", Map.class,paramMap);

System.out.println(forEntity2);

System.out.println("x");

}

}

java這塊調(diào)用我直接在測試包中寫的,可以在下面找到源碼,里面相關(guān)的pom文件就引入就行了。

https://github.com/zbelieve/MicroservicesWeb/tree/master/xc-service-manage-cms/src/test/java/com/xuecheng/manage_cms/dao

總結(jié)

以上是生活随笔為你收集整理的django调用java_07.手把手教将深度学习利用Django将模型发布成服务供java调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。