作为开发人员,最喜欢的就是捣腾技术。
最近几年,AI发展迅速,未来的趋势已定,做好技术储备,最为重要。话不多说,直接看效果。
入口:
预训练模型地址:https://github.com/Embedding/Chinese-Word-Vectors/blob/master/README_zh.md
它是由北京师范大学中文信息处理研究所与中国人民大学DBIIR实验室共同整理的,有很多模型,觉得还不错。
预料饲料呢,就爬取了某旅游网站的酒店评论数据。
使用词向量的模式,交叉熵损失函数,sigmoid,jieba分词。
以下为导入的包:
import os
import re
import sys
import warnings
import jieba
import matplotlib.pyplot as plt
import numpy as np
from gensim.models import KeyedVectors
from sklearn.model_selection import train_test_split
from tensorflow import keras
import tensorflow as tf
from tensorflow.python.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
from tensorflow.python.keras.layers import Dense, Embedding, LSTM, Bidirectional
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.optimizers import Adam
from tensorflow.python.keras.preprocessing.sequence import pad_sequences
使用keras的回调:
# 使用keras回调函数来调整训练过程中出现的偏差
def call_back():
# 建立一个权重的存储点
path_check_point = 'qingan/my_checkpoint.keras'
# 在训练之后,保存权重数值。当val_loss发生改变时触发保存 且打印进度
check_point = ModelCheckpoint(filepath= path_check_point, monitor='val_loss',
verbose= 1 ,save_weights_only=True, save_best_only=True)
# 定义early stopping 如果3个epoch validation loass 没有改善则停止训练 且打印进度
early_stopping = EarlyStopping(monitor='val_loss', patience=3,verbose=1)
# 自动降低学习率 且打印进度
lr = ReduceLROnPlateau(monitor='val_loss',factor=0.1,min_lr=0.000001,patience=0,verbose=1)
return check_point,early_stopping,lr
使用三层神经网络:
model = Sequential()
model.add(Embedding(number_words,embedding_num,weights=[create_embedding_matrix(cn_model)],
input_length=tokenizer_len, trainable= False)) # 不让模型训练Embedding层
model.add(Bidirectional(LSTM(units=64,return_sequences=True))) # 添加 双向LSTM层 32 单元,且每一层都返回sequences
model.add(LSTM(units=64, return_sequences=False)) # 单向
model.add(Dense(1, activation="sigmoid"))
# 使用adam 以0.001的学习率进行优化
op = Adam(lr=0.001)
model.compile(loss=loss_function,optimizer=op,metrics=[accuracy])
model.summary()
check_point,early_stopping,lr = call_back()
my_call_back = [early_stopping,check_point,lr]
主要是穷,买不起显卡。
看效果:
以后有时间可以详细记录,有事要出去了。目前接口,可以免费使用。