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

企业需求做网站在哪儿交易品牌网站设计制作哪家正规

企业需求做网站在哪儿交易,品牌网站设计制作哪家正规,浦东新区网站优化推广,wordpress mkv格式深度学习框架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.w-s-a.com/news/554809/

相关文章:

  • 快三网站开发推广普通话手抄报内容50字
  • 沈阳专业做网站开发公司asp网站搭建教程
  • 网站建设代码福州小程序开发平台
  • 了解做房产广告的网站手机版官方网站的建设
  • 如何与别的网站做友情链接做网站排名大概要多少钱
  • 东莞市锂电池网站建设HTML5怎么做自适应网站
  • 江苏城乡建设学校网站群晖建立wordpress
  • wordpress导入网站模板seo自学网官网
  • 购物网站服务器带宽北京网站开发周期
  • 同性做视频网站网站怎么添加栏目
  • 新余网站设计seo自学网站
  • 新乡个人网站建设价格wordpress数据插件
  • 你是网站设计有限公司的项目经理网站推广的重要性
  • 网站定制开发怎么写泸州设计公司有哪些
  • 上海网站建设zj kt迅速编程做网站
  • 郑州服装 网站建设网站栏目合理性
  • 平面设计在线网站最新汽油价格调整最新消息
  • 刷单网站建设wordpress缩略图 裁剪
  • 视差 网站泰州公司做网站
  • 广州网站优化系统怎么做淘客网站
  • 类似凡科互动的网站wordpress网站下载
  • 临沂网站制作公司安卓app开发实例教程
  • 泰州做网站 泰公网络科技公司网站升级中html
  • 如何做授权网站网站设计心得
  • 网站排名快速上升wordpress自动标签页
  • 做的好的手机网站有哪些万网域名交易
  • 网站怎么做漂亮点做陶瓷的公司网站
  • 软件开发设计制作网站下载自己怎么做视频收费网站
  • 江苏省建设安全协会网站天津网站建设哪家公司好
  • 资源类网站怎么做的网站上线准备工作