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

汉中城乡建设网站首页5个网站建设

汉中城乡建设网站首页,5个网站建设,三合一网站制作公司,永嘉县住房和城乡建设局网站深度学习框架Tensorflow2系列 注#xff1a;大家觉得博客好的话#xff0c;别忘了点赞收藏呀#xff0c;本人每周都会更新关于人工智能和大数据相关的内容#xff0c;内容多为原创#xff0c;Python Java Scala SQL 代码#xff0c;CV NLP 推荐系统等#xff0c;Spark …深度学习框架Tensorflow2系列 注大家觉得博客好的话别忘了点赞收藏呀本人每周都会更新关于人工智能和大数据相关的内容内容多为原创Python Java Scala SQL 代码CV NLP 推荐系统等Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货各种顶会的论文解读一起进步。 这个系列主要和大家分享深度学习框架Tensorflow2的各种api从基础开始。 #博学谷IT学习技术支持# 文章目录 深度学习框架Tensorflow2系列前言一、文本分类任务实战二、数据集介绍三、RNN模型所需数据解读四、实战代码1.数据预处理2.构建初始化embedding层3.构建训练数据4.自定义双层RNN网络模型5.设置参数和训练策略6.模型训练 总结 前言 通过代码案例实战学习Tensorflow2的各种api。 一、文本分类任务实战 任务介绍: 数据集构建影评数据集进行情感分析分类任务 词向量模型加载训练好的词向量或者自己训练都可以 序列网络模型训练RNN模型进行识别 二、数据集介绍 训练和测试集都是比较简单的电影评价数据集标签为0和1的二分类表示对电影的喜欢和不喜欢 三、RNN模型所需数据解读 RNN是一个比较基础的序列化模型其中输入的数据为[batch_size,max_len,feature_dim] 四、实战代码 1.数据预处理 import os import warnings warnings.filterwarnings(ignore) import tensorflow as tf import numpy as np import pprint import logging import time from collections import Counter from pathlib import Path from tqdm import tqdm# 构建语料表基于词频来进行统计 counter Counter() with open(./data/train.txt,encodingutf-8) as f:for line in f:line line.rstrip()label, words line.split(\t)words words.split( )counter.update(words)words [pad] [w for w, freq in counter.most_common() if freq 10] print(Vocab Size:, len(words))Path(./vocab).mkdir(exist_okTrue)with open(./vocab/word.txt, w,encodingutf-8) as f:for w in words:f.write(w\n)# 得到word2id映射表 word2idx {} with open(./vocab/word.txt,encodingutf-8) as f:for i, line in enumerate(f):line line.rstrip()word2idx[line] i得到的结果如下 2.构建初始化embedding层 # 做了一个大表里面有20598个不同的词【20599*50】 embedding np.zeros((len(word2idx)1, 50)) # 1 表示如果不在语料表中就都是unknowwith open(./data/glove.6B.50d.txt,encodingutf-8) as f: #下载好的count 0for i, line in enumerate(f):if i % 100000 0:print(- At line {}.format(i)) #打印处理了多少数据line line.rstrip()sp line.split( )word, vec sp[0], sp[1:]if word in word2idx:count 1embedding[word2idx[word]] np.asarray(vec, dtypefloat32) #将词转换成对应的向量# 保存结果 print([%d / %d] words have found pre-trained values%(count, len(word2idx))) np.save(./vocab/word.npy, embedding) print(Saved ./vocab/word.npy)得到的结果如下:word.txt中的每个单词转换成对应的向量 3.构建训练数据 def data_generator(f_path, params):with open(f_path,encodingutf-8) as f:print(Reading, f_path)for line in f:line line.rstrip()label, text line.split(\t)text text.split( )x [params[word2idx].get(w, len(word2idx)) for w in text]#得到当前词所对应的IDif len(x) params[max_len]:#截断操作x x[:params[max_len]]else:x [0] * (params[max_len] - len(x))#补齐操作y int(label)yield x, ydef dataset(is_training, params):_shapes ([params[max_len]], ())_types (tf.int32, tf.int32)if is_training:ds tf.data.Dataset.from_generator(lambda: data_generator(params[train_path], params),output_shapes _shapes,output_types _types,)ds ds.shuffle(params[num_samples])ds ds.batch(params[batch_size])ds ds.prefetch(tf.data.experimental.AUTOTUNE)#设置缓存序列目的加速else:ds tf.data.Dataset.from_generator(lambda: data_generator(params[test_path], params),output_shapes _shapes,output_types _types,)ds ds.batch(params[batch_size])ds ds.prefetch(tf.data.experimental.AUTOTUNE)return ds4.自定义双层RNN网络模型 class Model(tf.keras.Model):def __init__(self, params):super().__init__()self.embedding tf.Variable(np.load(./vocab/word.npy),dtypetf.float32,namepretrained_embedding,trainableFalse,)self.drop1 tf.keras.layers.Dropout(params[dropout_rate])self.drop2 tf.keras.layers.Dropout(params[dropout_rate])self.drop3 tf.keras.layers.Dropout(params[dropout_rate])self.rnn1 tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(params[rnn_units], return_sequencesTrue))self.rnn2 tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(params[rnn_units], return_sequencesTrue))self.rnn3 tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(params[rnn_units], return_sequencesFalse))self.drop_fc tf.keras.layers.Dropout(params[dropout_rate])self.fc tf.keras.layers.Dense(2*params[rnn_units], tf.nn.elu)self.out_linear tf.keras.layers.Dense(2)def call(self, inputs, trainingFalse):if inputs.dtype ! tf.int32:inputs tf.cast(inputs, tf.int32)batch_sz tf.shape(inputs)[0]rnn_units 2*params[rnn_units]x tf.nn.embedding_lookup(self.embedding, inputs)x self.drop1(x, trainingtraining)x self.rnn1(x)x self.drop2(x, trainingtraining)x self.rnn2(x)x self.drop3(x, trainingtraining)x self.rnn3(x)x self.drop_fc(x, trainingtraining)x self.fc(x)x self.out_linear(x)return x5.设置参数和训练策略 params {vocab_path: ./vocab/word.txt,train_path: ./data/train.txt,test_path: ./data/test.txt,num_samples: 25000,num_labels: 2,batch_size: 32,max_len: 1000,rnn_units: 200,dropout_rate: 0.2,clip_norm: 10.,num_patience: 3,lr: 3e-4, } def is_descending(history: list):history history[-(params[num_patience]1):]for i in range(1, len(history)):if history[i-1] history[i]:return Falsereturn True word2idx {} with open(params[vocab_path],encodingutf-8) as f:for i, line in enumerate(f):line line.rstrip()word2idx[line] i params[word2idx] word2idx params[vocab_size] len(word2idx) 1model Model(params) model.build(input_shape(None, None))#设置输入的大小或者fit时候也能自动找到decay_lr tf.optimizers.schedules.ExponentialDecay(params[lr], 1000, 0.95)#相当于加了一个指数衰减函数 optim tf.optimizers.Adam(params[lr]) global_step 0history_acc [] best_acc .0t0 time.time() logger logging.getLogger(tensorflow) logger.setLevel(logging.INFO)6.模型训练 while True:# 训练模型for texts, labels in dataset(is_trainingTrue, paramsparams):with tf.GradientTape() as tape:#梯度带记录所有在上下文中的操作并且通过调用.gradient()获得任何上下文中计算得出的张量的梯度logits model(texts, trainingTrue)loss tf.nn.sparse_softmax_cross_entropy_with_logits(labelslabels, logitslogits)loss tf.reduce_mean(loss)optim.lr.assign(decay_lr(global_step))grads tape.gradient(loss, model.trainable_variables)grads, _ tf.clip_by_global_norm(grads, params[clip_norm]) #将梯度限制一下有的时候回更新太猛防止过拟合optim.apply_gradients(zip(grads, model.trainable_variables))#更新梯度if global_step % 50 0:logger.info(Step {} | Loss: {:.4f} | Spent: {:.1f} secs | LR: {:.6f}.format(global_step, loss.numpy().item(), time.time()-t0, optim.lr.numpy().item()))t0 time.time()global_step 1# 验证集效果m tf.keras.metrics.Accuracy()for texts, labels in dataset(is_trainingFalse, paramsparams):logits model(texts, trainingFalse)y_pred tf.argmax(logits, axis-1)m.update_state(y_truelabels, y_predy_pred)acc m.result().numpy()logger.info(Evaluation: Testing Accuracy: {:.3f}.format(acc))history_acc.append(acc)if acc best_acc:best_acc acclogger.info(Best Accuracy: {:.3f}.format(best_acc))if len(history_acc) params[num_patience] and is_descending(history_acc):logger.info(Testing Accuracy not improved over {} epochs, Early Stop.format(params[num_patience]))break总结 通过RNN文本分类任务代码案例实战学习Tensorflow2的各种api。
http://www.tj-hxxt.cn/news/138152.html

相关文章:

  • 什么做网站赚钱营销策划方案ppt
  • 泰州做房产的网站c2c网站的建设
  • 兴安盟市住房和城乡建设局网站网站建设怎么挣钱
  • 上海联通 网站备案网站建设合同封皮
  • 学多久可以做网站 知乎网站推广的优缺点
  • wordpress站点更换域名网站app生成器下载
  • 西安哪家做网站公司好互联网站开发管理文档
  • 一站式服务是什么意思大网站建设
  • 骗子会利用钓鱼网站做啥在线平面设计师招募
  • 企业网站空间购买wordpress 输出豆瓣
  • 微商城网站建设公司上海卫生人才招聘官网
  • 成都网站设计与制作网站建设属于无形资产
  • asp.net个人网站模板百度做网站好吗
  • 要建设一个网站需要什么手续费dz论坛做视频网站教程
  • 鹤壁建设网站推广渠道电话优化师和运营区别
  • 网站平台建设意见企业怎么注册163邮箱
  • 如何进入网站后台 被黑如何自己做网站发布到服务器上面
  • 怎么做坑人的网站做指甲的网站叫什么名字来着
  • 深圳培训手机网站建设网站建设的公司系统规划
  • 网站建设 加强宣传艺术字logo在线生成器
  • 企业网站建设存在的典型问题有哪些?网页设计模板图片中文
  • 怎么查看网站开发语言的类型品牌
  • 在线捏脸网站需要多少钱地方门户网站赚钱吗
  • 揭阳企业建站系统模板摄影网站制作设计
  • 网站空间哪里买大数据营销系统多少钱
  • 北京微网站制作外贸网站演示
  • asp网站伪静态网站建设含意
  • 网站内容建设方法步骤推广自己的网站
  • 小程序应用开发东莞关键词优化排名
  • 从0搭建一个网站手机上如何做mv视频网站