当前位置: 首页 > news >正文

做网站网关备案网站设计实训心得

做网站网关备案,网站设计实训心得,如何创建网页链接,购买域名后用wordpress建站1 前言 #x1f525;学长分享优质竞赛项目#xff0c;今天要分享的是 #x1f6a9; GRU的 电影评论情感分析 - python 深度学习 情感分类 #x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数#xff1a;3分工作量#xff1a;3分创新点#xff1a;4分 这…1 前言 学长分享优质竞赛项目今天要分享的是 GRU的 电影评论情感分析 - python 深度学习 情感分类 学长这里给一个题目综合评分(每项满分5分) 难度系数3分工作量3分创新点4分 这是一个较为新颖的竞赛课题方向学长非常推荐 更多资料, 项目分享 https://gitee.com/dancheng-senior/postgraduate 1 项目介绍 其实很明显这个项目和微博谣言检测是一样的也是个二分类的问题因此我们可以用到学长之前提到的各种方法即 朴素贝叶斯或者逻辑回归以及支持向量机都可以解决这个问题。 另外在深度学习中我们可以用CNN-Text或者RNN以及LSTM等模型最好。 当然在构建网络中也相对简单相对而言LSTM就比较复杂了为了让不同层次的同学们可以接受学长就用了相对简单的GRU模型。 如果大家想了解LSTM。以后学长会给大家详细介绍。 2 情感分类介绍 其实情感分析在自然语言处理中情感分析一般指判断一段文本所表达的情绪状态属于文本分类问题。一般而言情绪类别正面/负面。当然这就是为什么本人在前面提到情感分析实际上也是二分类问题的原因。 3 数据集 学长本次使用的是非常典型的IMDB数据集。 该数据集包含来自互联网的50000条严重两极分化的评论该数据被分为用于训练的25000条评论和用于测试的25000条评论训练集和测试集都包含50%的正面评价和50%的负面评价。该数据集已经经过预处理评论单词序列已经被转换为整数序列其中每个整数代表字典中的某个单词。 查看其数据集的文件夹这是train和test文件夹。 接下来就是以train文件夹介绍里面的内容 然后就是以neg文件夹介绍里面的内容里面会有若干的text文件 4 实现 4.1 数据预处理 #导入必要的包 ​ import zipfile ​ import os ​ import io ​ import random ​ import json ​ import matplotlib.pyplot as plt ​ import numpy as np ​ import paddle ​ import paddle.fluid as fluid ​ from paddle.fluid.dygraph.nn import Conv2D, Pool2D, Linear, Embedding ​ from paddle.fluid.dygraph.base import to_variable ​ from paddle.fluid.dygraph import GRUUnit ​ import paddle.dataset.imdb as imdb​ ​ ​ #加载字典 ​ def load_vocab(): ​ vocab imdb.word_dict() ​ return vocab ​ #定义数据生成器 ​ class SentaProcessor(object): ​ def __init__(self): ​ self.vocab load_vocab()def data_generator(self, batch_size, phasetrain):if phase train:return paddle.batch(paddle.reader.shuffle(imdb.train(self.vocab),25000), batch_size, drop_lastTrue)elif phase eval:return paddle.batch(imdb.test(self.vocab), batch_size,drop_lastTrue)else:raise ValueError(Unknown phase, which should be in [train, eval])步骤 首先导入必要的第三方库 接下来就是数据预处理需要注意的是数据是以数据标签的方式表示一个句子因此每个句子都是以一串整数来表示的每个数字都是对应一个单词。当然数据集就会有一个数据集字典这个字典是训练数据中出现单词对应的数字标签。 4.2 构建网络 这次的GRU模型分为以下的几个步骤 定义网络定义损失函数定义优化算法 具体实现如下 ​ #定义动态GRUclass DynamicGRU(fluid.dygraph.Layer):def __init__(self,size,param_attrNone,bias_attrNone,is_reverseFalse,gate_activationsigmoid,candidate_activationrelu,h_0None,origin_modeFalse,):super(DynamicGRU, self).__init__()self.gru_unit GRUUnit(size * 3,param_attrparam_attr,bias_attrbias_attr,activationcandidate_activation,gate_activationgate_activation,origin_modeorigin_mode)self.size sizeself.h_0 h_0self.is_reverse is_reversedef forward(self, inputs):hidden self.h_0res []for i in range(inputs.shape[1]):if self.is_reverse:i inputs.shape[1] - 1 - iinput_ inputs[ :, i:i1, :]input_ fluid.layers.reshape(input_, [-1, input_.shape[2]], inplaceFalse)hidden, reset, gate self.gru_unit(input_, hidden)hidden_ fluid.layers.reshape(hidden, [-1, 1, hidden.shape[1]], inplaceFalse)res.append(hidden_)if self.is_reverse:res res[::-1]res fluid.layers.concat(res, axis1)return res​ class GRU(fluid.dygraph.Layer): def init(self): super(GRU, self).init() self.dict_dim train_parameters[“vocab_size”] self.emb_dim 128 self.hid_dim 128 self.fc_hid_dim 96 self.class_dim 2 self.batch_size train_parameters[“batch_size”] self.seq_len train_parameters[“padding_size”] self.embedding Embedding( size[self.dict_dim 1, self.emb_dim], dtype‘float32’, param_attrfluid.ParamAttr(learning_rate30), is_sparseFalse) h_0 np.zeros((self.batch_size, self.hid_dim), dtype“float32”) h_0 to_variable(h_0) self._fc1 Linear(input_dimself.hid_dim, output_dimself.hid_dim*3)self._fc2 Linear(input_dimself.hid_dim, output_dimself.fc_hid_dim, actrelu)self._fc_prediction Linear(input_dimself.fc_hid_dim,output_dimself.class_dim,actsoftmax)self._gru DynamicGRU(sizeself.hid_dim, h_0h_0)def forward(self, inputs, labelNone):emb self.embedding(inputs)o_np_mask to_variable(inputs.numpy().reshape(-1,1) ! self.dict_dim).astype(float32)mask_emb fluid.layers.expand(to_variable(o_np_mask), [1, self.hid_dim])emb emb * mask_embemb fluid.layers.reshape(emb, shape[self.batch_size, -1, self.hid_dim])fc_1 self._fc1(emb)gru_hidden self._gru(fc_1)gru_hidden fluid.layers.reduce_max(gru_hidden, dim1)tanh_1 fluid.layers.tanh(gru_hidden)fc_2 self._fc2(tanh_1)prediction self._fc_prediction(fc_2)if label is not None:acc fluid.layers.accuracy(prediction, labellabel)return prediction, accelse:return prediction4.3 训练模型 ​ def train():with fluid.dygraph.guard(place fluid.CUDAPlace(0)): # # 因为要进行很大规模的训练因此我们用的是GPU如果没有安装GPU的可以使用下面一句把这句代码注释掉即可# with fluid.dygraph.guard(place fluid.CPUPlace()):​ processor SentaProcessor() train_data_generator processor.data_generator(batch_sizetrain_parameters[“batch_size”], phase‘train’) model GRU()sgd_optimizer fluid.optimizer.Adagrad(learning_ratetrain_parameters[lr],parameter_listmodel.parameters())steps 0Iters, total_loss, total_acc [], [], []for eop in range(train_parameters[epoch]):for batch_id, data in enumerate(train_data_generator()):steps 1doc to_variable(np.array([np.pad(x[0][0:train_parameters[padding_size]], (0, train_parameters[padding_size] - len(x[0][0:train_parameters[padding_size]])),constant,constant_values(train_parameters[vocab_size]))for x in data]).astype(int64).reshape(-1))label to_variable(np.array([x[1] for x in data]).astype(int64).reshape(train_parameters[batch_size], 1))model.train()prediction, acc model(doc, label)loss fluid.layers.cross_entropy(prediction, label)avg_loss fluid.layers.mean(loss)avg_loss.backward()sgd_optimizer.minimize(avg_loss)model.clear_gradients()if steps % train_parameters[skip_steps] 0:Iters.append(steps)total_loss.append(avg_loss.numpy()[0])total_acc.append(acc.numpy()[0])print(step: %d, ave loss: %f, ave acc: %f %(steps,avg_loss.numpy(),acc.numpy()))if steps % train_parameters[save_steps] 0:save_path train_parameters[checkpoints]/save_dir_ str(steps)print(save model to: save_path)fluid.dygraph.save_dygraph(model.state_dict(),save_path)draw_train_process(Iters, total_loss, total_acc)4.4 模型评估 结果还可以这里说明的是刚开始的模型训练评估不可能这么好很明显是过拟合的问题这就需要我们调整我们的epoch、batchsize、激活函数的选择以及优化器、学习率等各种参数通过不断的调试、训练最好可以得到不错的结果但是如果还要更好的模型效果其实可以将GRU模型换为更为合适的RNN中的LSTM以及bi- LSTM模型会好很多。 4.5 模型预测 train_parameters[batch_size] 1 with fluid.dygraph.guard(place fluid.CUDAPlace(0)):sentences this is a great moviedata load_data(sentences)print(sentences)print(data)data_np np.array(data)data_np np.array(np.pad(data_np,(0,150-len(data_np)),constant,constant_values train_parameters[vocab_size])).astype(int64).reshape(-1)infer_np_doc to_variable(data_np)model_infer GRU()model, _ fluid.load_dygraph(data/save_dir_750.pdparams)model_infer.load_dict(model)model_infer.eval()result model_infer(infer_np_doc)print(预测结果为正面概率为%0.5f负面概率为%0.5f % (result.numpy()[0][0],result.numpy()[0][1]))训练的结果还是挺满意的到此为止我们的本次项目实验到此结束。 5 最后 更多资料, 项目分享 https://gitee.com/dancheng-senior/postgraduate
http://www.dnsts.com.cn/news/155445.html

相关文章:

  • 选择网站设计公司佛山代理ip免费
  • 网站的搜索功能一般怎么做wordpress信息收集表单制作
  • 如何做网站赚钱6电子商务网站有哪些
  • 网站如何做推广旅游最好的网站建设
  • 视频网站开发问题北京百度推广官网首页
  • 广东省建设工程合同备案网站网站服务器怎么做
  • 如何看网站做没做推广网页设计结构
  • 如何开 网站建设公司高新区网站建设的建议
  • 代做网站优化物业公司网站建设
  • php做网站用什么软件好洛阳电商网站建设公司排名
  • 做响应式网站最大宽度陕西建设网站
  • 监控系统网站开发网站备案到公司名称
  • 网站推广代运营公司注册在上海的好处
  • 有了域名如何建立网站太原网站建设列表网
  • 怎样推荐企业建设网站和互联网推广常用的博客建站程序
  • 营销网站好不好网站icp备案信息如何查询
  • 外贸专用网站网站目的及功能定位
  • 下单的网站建设教程下载微信
  • 土木毕业设计代做网站润东电子科技 网站建设
  • 国外做旅游攻略的网站好中国建筑第八工程局官网
  • 织梦文章类网站模板公司黄页是什么意思
  • 做网站图片教程如何网站做外贸生意
  • 西部数码手机网站宁波住房建设网站
  • 公司网站建设工作内容南通外贸网站推广
  • 企业网站、电子期刊属于企业文化传播载体中的( )。有什么做网站的公司
  • 网站连接微信网站做等保测评
  • 一级a做爰片免费网站 新闻南沙区做网站
  • 杨陵区住房和城乡建设局网站信阳建设企业网站公司
  • 深圳cms建站系统今天实时热搜榜排名
  • 阿里云 建设网站怎么样wordpress.org去掉