zoukankan      html  css  js  c++  java
  • 深度学习项目部署在阿里云服务器 记录

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

  • 相关阅读:
    可空类型转换为不可空的普通类型
    如何使用AspNetPager分页控件和ObjectDataSource控件进行分页
    TFS映射后丢失引用的问题
    (很好用)JS时间控件实现日期的多选
    取两个日期之间的非工作日的天数(指的是周六、周日)
    在日期格式化的时候提示错误:Tostring没有采用一个参数的重载
    Linq返回的集合类型不是已有的表格类型时的写法(谨记:列表的时候用)
    系统缓存全解析6:数据库缓存依赖
    实现文本框动态限制字数的实现(好方法)
    实现GridView内容循环滚动
  • 原文地址:https://www.cnblogs.com/jingpeng77/p/15073171.html
Copyright © 2011-2022 走看看