【李佳辉_周报_2022.10.16】

1. 本周学习主要内容

  • 主要学习处理时间序列问题的NLP领域
  • 一些简单的模型部署

1.1 NLP基础

  • 自然语言与单词的分布表示
  • word2vec
  • RNN
  • LSTM
  • seq2seq

1.2 机器学习模型部署

  • Flask
  • Pyqt5

2. 所遇到问题及代办

  • 在学习NLP时明显感觉比CV领域的要复杂
  • NLP应该专注于学习什么领域、模型?是否需要不停学习sota?因为时间序列模型RNN、LSTM就是属于这一领域的范畴
  • flask应该学到什么程度?一些request接口需要学习
  • flask使用pickle模块是否能满足工程化的需求?
  • NLP的一些数学原理很复杂
  • 继续学习时间序列模型与模型部署的方法思路

3.本周重点

由于本周主要在阅读自然语言处理入门相关书籍,主要学习NLP的一些基础理论与算法思想,故实操比较少

3.1 自然语言处理

我们平常使用的语言,如日语或英语,称为自然语言(natural language)。所谓自然语言处理(Natural Language Processing,NLP),顾名思义,就是处理自然语言的科学。简单地说,它是一种能够让计算机理解人类语言的技术。换言之,自然语言处理的目标就是让计算机理解人说的话,进而完成对我们有帮助的事情。

3.1.1 主要应用领域

1、语义文本相似度分析

2、信息检索

3、 信息抽取

4、文本分类

5、文本挖掘

6、文本情感分析

7、问答系统

8、机器翻译

9、自动摘要

3.1.2 word2vec

是一个将单词转换成向量形式的工具,通过上下文来学习语义信息包含两个经典模型 CBOW 和 Skip-gram,此处不进行详细阐述。

3.2 RNN

虽然前馈网络结构简单、易于理解,但是可以应用于许多任务中。不过,这种网络存在一个大问题,就是不能很好地处理时间序列数据(以下简称为“时序数据”)。更确切地说,单纯的前馈网络无法充分学习时序数据的性质(模式)。于是,RNN(Recurrent Neural Network,循环神经网络)便应运而生。

基本结构
基本结构
在这里插入图片描述
RNN循环层展开
在这里插入图片描述
基本原理公式
在这里插入图片描述
反向传播原理图

  • Truncated BPTT
    在这里插入图片描述
    截断式BPTT原理图
    在这里插入图片描述
    TBPTT原理图
    在这里插入图片描述
    引入mini-batch后学习原理图

原书的代码是基于keras,此处省略代码展示

3.2 LSTM

  • 目的:解决RNN中可能会出现的梯度消失和梯度爆炸
    在这里插入图片描述
    LSTM接口简单示意图
    在这里插入图片描述
    RNN层与LSTM层的比较
    在这里插入图片描述
    LSTM层基于记忆单元ct计算隐藏状态ht
    在这里插入图片描述
    添加输入门、遗忘门后的原理图

3.4 Attention机制

Attention机制原理尚未清楚明白其原理,故继续学习
在这里插入图片描述

Attention解码器结构图

4.一个简单的机器学习模型部署基于web

在这里插入图片描述
web界面

  • 内容:输入三个特征可预测森林发生火灾的概率
    app代码:
from flask import Flask
from flask import request
from flask import url_for
from flask import redirect
from flask import render_template
import pickle
import numpy as np

app = Flask(__name__)

model=pickle.load(open('model.pkl','rb'))


@app.route('/')
def hello_world():
    return render_template("forest_fire.html")


@app.route('/predict',methods=['POST','GET'])
def predict():
    int_features=[int(x) for x in request.form.values()]
    final=[np.array(int_features)]
    print(int_features)
    print(final)
    prediction=model.predict_proba(final)
    output='{0:.{1}f}'.format(prediction[0][1], 2)

    if output>str(0.5):
        return render_template('forest_fire.html',pred='Your Forest is in Danger.\nProbability of fire occuring is {}'.format(output),bhai="kuch karna hain iska ab?")
    else:
        return render_template('forest_fire.html',pred='Your Forest is safe.\n Probability of fire occuring is {}'.format(output),bhai="Your Forest is Safe for now")


if __name__ == '__main__':
    app.run(debug=True)

机器学习模型训练代码

#!C:\Users\Lenovo\AppData\Local\Programs\Python\Python37-32\python.exe

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import warnings
import pickle
warnings.filterwarnings("ignore")

data = pd.read_csv("Forest_fire.csv")
data = np.array(data)

X = data[1:, 1:-1]
y = data[1:, -1]
y = y.astype('int')
X = X.astype('int')
# print(X,y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
log_reg = LogisticRegression()


log_reg.fit(X_train, y_train)

inputt=[int(x) for x in "45 32 60".split(' ')]
final=[np.array(inputt)]

b = log_reg.predict_proba(final)


pickle.dump(log_reg,open('model.pkl','wb'))
model=pickle.load(open('model.pkl','rb'))

css和js 省略

  • 问题:
  1. flask接口问题尚未明白
  2. pickle模块待学习
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值