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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

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

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

標題

問題

一.python發布成服務

1.先建立一個深度學習模型并訓練好

2.建立一個預測方法去調用訓練好的模型

3.建立一個Django工程

4.將python利用模型預測的代碼放入Django項目中

5.get請求加上參數

6.github

二.JAVA請求url,返回json數據

問題

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

一.python發布成服務

1.先建立一個深度學習模型并訓練好

BiLSTM+CRF模型構建

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()

比如我這是先建立了一個命名實體識別的深度學習模型,用keras建立的,并訓練生成模型ch_ner_model4.h5,模型建立如上所示,具體代碼請移步github,后面會貼出。

2.建立一個預測方法去調用訓練好的模型

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

'''用來預測'''

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.建立一個Django工程

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

用命令django-admin startproject ner_web_v1建立這個工程,然后cd進去,輸入命令

python3 manage.py runserver 127.0.0.1:8000/。看到下面這個即啟動Django成功.

4.將python利用模型預測的代碼放入Django項目中

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

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

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

5.get請求加上參數

我這的請求主要需要加上數據庫中的id作為請求值。

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

請求時候加上id參數即可。

6.github

https://github.com/zbelieve/ner

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

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

二.JAVA請求url,返回json數據

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

@SpringBootTest

@RunWith(SpringRunner.class)

public class testRestTemplate {

@Autowired

RestTemplate restTemplate;

@Test

//測試遠程連接獲取模型數據,這個就是模型+數據中的數據

public void testRestTemplate(){

// 封裝參數,這里是HashMap

Map paramMap = new HashMap();

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

//測試這個的時候要把服務器開了

//url請求返回的是json數據,之后在這兒轉換map,就是鍵值對類型的,這兒獲取的遠程訪問的數據是cmsconfig的數據,主要想獲取他的圖片數據在服務器的url,靜態化分為模板和數據,這兒就是獲得動態的數據

//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這塊調用我直接在測試包中寫的,可以在下面找到源碼,里面相關的pom文件就引入就行了。

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。