1.必备工具
winscp和Xshell
WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。
XShell
是一个强大的安全终端模拟软件.XShell
可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
百度云:
链接:https://pan.baidu.com/s/1bIFko0h1fh_9dHKmqKvKNg
提取码:ehf6
2.配置Anaconda环境
3.创建一个Anaconda虚拟环境
conda create --name my_test python=3.6#创建一个名称为my_test
4.激活虚拟环境
activate my_test
5.切换环境
查看已有虚拟环境
conda env list
切换到想要的虚拟环境,这里我切换到my_test
conda activate my_test
6.导出本地的深度学习环境依赖包
在命令行中输入
pip freeze>requirements.txt
7.在云服务器上切换到自己的虚拟环境,然后通过pip 安装从本地导出的环境依赖包
安装requirements文件中的包
pip install -r requirements.txt
8.在服务器上run项目(predict.py)
gunicorn -b 0.0.0.0:端口号 predict_y1:app -D --timeout=200
1.gunicorn参数介绍
2.gunicorn安装
https://blog.csdn.net/yuhaibao324/article/details/107716073
有可能遇到后台有一个进程在运行着,被占用需要kill的情况:
查看当前进程
netstat -nlp | grep 5234
杀死当前进程
kill -9 进程号
from flask import Flask, request
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
# route()方法用于设定路由;类似spring路由配置
@app.route("/predict_zjp/", methods = ["POST"])
def runzjp():
data = request.get_json()
print(data)
content = data["text"]
flagA = data["flagA"]
flagB = data["flagB"]
flagC = data["flagC"]
print(data["text"])
print(data["flagA"])
print(data["flagB"])
print(data["flagC"])
result = predict(content,flagA,flagB,flagC)
print(result)
return result
9.在本地通过post一个json格式的data访问服务器,服务器return一个json
# coding=utf-8
import json
import requests
from urllib3.util import response
url = 'http://IP地址:端口号/predict_zjp/'
headers = {
"Content-Type": "application/json;charset=utf8"
}
# post的数据
data = {"text":"自2018年始,被申诉人陈健为了牟取利益,从他人(另案处理)处购进大量非法进口卷烟、伪劣卷烟等用于销售,并将上述购进的烟品囤积在河南省新乡市红旗区李庄涵西街道1楼152室,其中已部分销售给李奇、徐长青等人,销售金额共计人民币6400元。2019年3月5日,被告人陈健驾驶一辆三轮车来到莆田市荔城区黄石镇**附近,与一名陌生男子(另案处理)接头交易后,运载新购进的非法进口卷烟、伪劣卷烟等行至红旗区涵西街道附近三岔路口时,被新乡市红旗区烟草专卖局当场查获。次日,新乡市公安局涵江分局从被告人陈健租赁的1楼152室内扣押到非法进口卷烟、伪劣卷烟等烟草专卖品。经鉴定,上述被扣押的全部卷烟,其中假冒注册商标且伪劣卷烟共计237条、伪劣卷烟共计897条、非法进口的真品卷烟共计1388条、非法进口的其他卷烟共计514条、非法渠道的真品卷烟共计48条。经物价认定,上述卷烟共计价值人民币812694.63元。法院判处被申诉人陈健赔偿烟草贩卖商以及人员烟草金额,但陈健以各种理由仍未实施,请求检察院依法处理陈健的违法经营行为","flagA":1,"flagB":0,"flagC":0}
r = requests.post(url, data=json.dumps(data),headers=headers,timeout=300)
print(r.text)
# 输出的数据
# [{"服务id": "002005", "服务质量": 0.0}, {"服务id": "002004", "服务质量": 0.6666666666666666}, {"服务id": "002002", "服务质量": 1.0}
10.遇到的问题以及解决方案
keras 反复调用model 模型 出错:
Cannot interpret feed_dict key as Tensor: Tensor Tensor("Placeholder_8:0", shape=(3, 3, 128, 256), dtype=float32) is not an element of this graph.
解决方法:
后端我使用的是flask框架,上传一段文本传入基于tensorflow的keras模型进行预测,重复预测时,报告上述错误.原因大概是第二次预测时,model底层tensorflow的session中还有数据.
解决方法:在调用模型前面加一句 keras.backend.clear_session()