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发布成服务

9b71b3059dfc60875acf1ef9ae05619f.png

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成功.

4c9feecb7f8214bc7dfcec654db8b22b.png

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引入。

d49f58f9b314a0d3f0479820061e9af7.png

5.get请求加上参数

我这的请求主要需要加上数据库中的id作为请求值。

所以在ner_web_v1加上获取请求的参数,id = request.GET.get(‘id’, ‘0’)。

请求时候加上id参数即可。

7fa476d48e126c921208683dbc303038.png

6.github

https://github.com/zbelieve/ner

代码中的数据库表特别简单可以自己建立一个,TX_TEXT是一些纯文本文章。传的id就是TM_ID。

里面的路径比如字典和模型路径,改成自己本机的绝对路径即可。有用的话,麻烦赏个星。我也是边学边做,讲的不对的勿喷。

d6a4efb516293758f511322763635cc4.png

二.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");

}

}

b93056659523f706b2ecf081e9f849fe.png

java这块调用我直接在测试包中写的,可以在下面找到源码,里面相关的pom文件就引入就行了。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot转发http请求_网易后端实习生分享:Springboot异常和错误处理规范

由于错误在所难免,异常处理已经成为开发工作中不可或缺的部分。在web开发中,我们通常不希望用户看到一个写满StackTrace的错误页面;同时,我们希望出现错误或发生异常时,开发运维人员可以看到详细的错误信息&#xff0c…

springmvc 拦截器_Spring MVC拦截器学习

1 介绍Spring Web MVC是基于Servlet API构建的原始Web框架。2 拦截器2.1 定义springmvc框架的一种拦截机制2.2 使用2.2.1 两步走实现HandlerInterceptor接口注册(xml或者注解 )2.2.2 HandlerInterceptor接口实现HandlerInterceptor接口import org.spring…

java文件读入原理_描述一下JVM加载class文件的原理机制

1、JVM 简介JVM 是我们Javaer 的最基本功底了,刚开始学Java 的时候,一般都是从“Hello World ”开始的,然后会写个复杂点class ,然后再找一些开源框架,比如Spring ,Hibernate 等等,再然后就开发…

微信流媒体直播java_微信小程序直播带货教程

微信小程序直播带货教程微信小程序正式推出直播带货组件,很多正在使用 “api工厂” 的用户,这几天一直在问,现有小程序如何使用直播带货的功能,需要不需要做很复杂的改动?是否需要重新开发小程序?使用门槛高…

vue和java实现页面增删改_SpringBoot-Vue实现增删改查及分页小DEMO

前言主要通过后端 Spring Boot 技术和前端 Vue 技术来简单开发一个demo,实现增删改查、分页功能以及了解Springboot搭配vue完成前后端分离项目的开发流程。开发栈前端开发工具:WebStorm开发框架:vue axios包管理工具: npm打包工具&#xff1…

读取24位ad的值_实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值

摘要:一文带你用小熊派开发板动手做土壤湿度传感器。一、实验准备1.实验环境一块stm32开发板(推荐使用小熊派),以及数据线已经安装STM32CubeMX已经安装KeilMDK,并导入stm32开发板对应的芯片包(小熊派使用的是STM32L431…

mac 爱普生打印机驱动_高效打印企业首选 爱普生M2178黑白多功能一体机评测

提到打印机相信每一个公司都配备了一台,因为它是日常办公中不可缺少。尽管现在很多的工作流程都已经可以在线上执行,且提倡无纸化办公,但很多重要的材料还是需要打印出来存档、签字。因此打印机还是一个非常必要的配置。对于一个企业来讲&…

php ajax 加载列表,Ajax点击不断加载数据列表(图文教程)

这篇文章主要介绍了Ajax点击不断加载数据列表的相关资料,需要的朋友可以参考下Ajax简介AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX 异步 JavaScript和XML(标准通用标记语言的子集)。AJAX 是…

linux版_微软爱 Linux:安全杀毒软件 Defender ATP 要出 Linux 版了! | Linux 中国

微软宣布将于 2020 年将其企业安全产品 Defender 高级威胁防护(ATP)引入 Linux。-- Abhishek Prakash微软的年度开发者大会 Microsoft Ignite 刚刚结束,会上发布了一些与 Linux 有关的重要公告。你可能已经知道微软将 Edge Web 浏览器引入 Linux,而下一个…

msp430中如何连续对位进行取反_四元数数控:如何保养视觉对位平台?

视觉对位平台由于人工衍生出来的各种问题应运而生,诸如高度要求的良率,生产速度的大幅提升,人员无法达成的精准度等等,对于未来这种高度自动化程度的产业更是不可或缺的产品。视觉对位平台就是一种利用XY向的移动单元加上θ角的微量转向,达到两个工作物体的组合。而且对位平台是…

ic启动器怎么导入模组_5G手机主板专题报告:高阶产能紧俏,5G手机主板升级蛋糕怎么分...

(获取报告请登陆未来智库www.vzkoo.com)一、智能机进入 5G 时代,主板方案望迎阶数跃迁5G 手机主板需求升级或将带来行业高端产能供给偏紧,A 股高端 HDI 供应商望受益。 当前时点手机各个维度的创新升级都对主板技术路线产生影响,芯片 I/O 数增…

element tree不刷新视图_Vue项目布署后,刷新页面404的真正原因找到了

从一篇日记说起我是一个小前端,我有写日记的习惯2020年10月17 天气 晴今天天气不错,心情也跟着好起来了辛辛苦苦加班两个星期终于完成了产品需求,到了要上线的时候了,嘴里也不知不觉哼起了“劳资今晚不加班”的小曲一顿操作猛如虎…

编程加速服务器_FPGA加速驱动新时代的数据洪流,下篇

目 录人工智能计算加速器产品系列的相关布局FPGA开发的痛点与潜在方案结语在《FPGA加速驱动新时代的数据洪流,上篇》中,老石介绍了英特尔应对大数据时代的整体战略布局,特别是基于FPGA的各类智能网卡和网络解决方案。在本篇中,老石…

respond with a status of 40_高中英语作文高分秘籍!50组高级替换词+40个高级句型+88个高级词组,还不快记下!...

很多同学都发现,高中阶段对于写作的考查要求更高,一篇没有错误但平淡无奇的文章是拿不到高分的,保证正确性的前提下,写作必须要有出彩之处才能得到阅卷老师的青睐,今天就为大家分享高中写作50组高级替换词40个高级句型…

iphone分屏功能怎么用_iPhone上10个隐藏小技巧,怎么用怎么爽

离上一期iPhone技巧已经过了四个多月时间了,不少朋友在后台一直催小雷赶紧出下一期。为了不让你等太久,所以今天小雷就奉上新的一期(也是防止你们等得不耐烦了以至于想捶我)。这期干货实在太多,如果其中有一些你们之前get过的话,就…

太阳能板如何串联_太阳能光伏系统单晶和多晶模组的差异?农村家庭自用如何科学选择...

太阳能光伏想必大家都耳熟能详,因其环保且属于可再生能源,目前在农村很多居民屋顶都已经铺设了光伏发电系统,即节省了电费开支又能并入国家电网,所以近些年来我国的光伏产业得到了很好的发展,是目前发展最快的清洁能源…

数据查询和业务流分开_TiDB HTAP 助力小红书业务升级

作者介绍:张亿皓,小红书基础技术部资深开发工程师,负责数据库相关的研发和落地工作。TiDB 在小红书业务场景的应用简介2017 年,小红书已经开始在生产业务中使用 TiDB ,真正成体系的去做 TiDB 的落地是在 2018 年&#…

php server自定义函数,php:SQL Server用户自定义的函数种类详解

关于SQL Server用户自定义的函数,有标量函数、表值函数(内联表值函数、多语句表值函数)两种。题外话,可能有部分朋友不知道SQL Serve用户自定义的函数应该是写在哪里,这里简单提示一下,在Microsoft SQL Server Managerment Studio…

vlan为什么能隔离广播域_路由交换技术-VLAN原理及配置

VLAN原理及配置1. 背景网络中计算机的数量越来越多,传统的以太网开到面临冲突严重,广播泛滥及安全性无法保障等问题VLAN(virtual local area network)即虚拟局域网,是将一个物理的局域网在逻辑上划分为多个广播域的技术,通过在交换…

刀片 显卡 排行_AMD发布RadeonRX6000系列游戏显卡 4599元起

10月30日消息,据国外媒体报道,AMD日前发布了Radeon RX 6000系列游戏显卡,该系列显卡包括AMD Radeon(镭龙) RX 6800显卡和RX 6800 XT显卡,以及新旗舰RX 6900 XT显卡。AMD Radeon RX 6000系列显卡(图片来自AMD官网)AMD Radeon RX 68…