深度学习2.0-40.LSTM原理及实战
文章目录
- 1.LSTM原理
- 2.LSTM的实战
1.LSTM原理
2.LSTM的实战
import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import layerstf.random.set_seed(22)
np.random.seed(22)
assert tf.__version__.startswith('2.')batchsz = 128# the most frequest words
total_words = 10000
max_review_len = 80
embedding_len = 100
(x_train, y_train), (x_test, y_test) = keras.datasets.imdb.load_data(num_words=total_words)
# x_train:[b, 80]
# x_test: [b, 80]
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=max_review_len)
x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=max_review_len)db_train = tf.data.Dataset.from_tensor_slices((x_train, y_train))
db_train = db_train.shuffle(1000).batch(batchsz, drop_remainder=True)
db_test = tf.data.Dataset.from_tensor_slices((x_test, y_test))
db_test = db_test.batch(batchsz, drop_remainder=True)
print('x_train shape:', x_train.shape, tf.reduce_max(y_train), tf.reduce_min(y_train))
print('x_test shape:', x_test.shape)# 修改两处self.state0与self.rnn_cell0
class MyRNN(keras.Model):def __init__(self, units):super(MyRNN, self).__init__()# [b, 64]self.state0 = [tf.zeros([batchsz, units]), tf.zeros([batchsz, units])]self.state1 = [tf.zeros([batchsz, units]), tf.zeros([batchsz, units])]# transform text to embedding representation# [b, 80] => [b, 80, 100]self.embedding = layers.Embedding(total_words, embedding_len,input_length=max_review_len)# [b, 80, 100] , h_dim: 64# RNN: cell1 ,cell2, cell3self.rnn_cell0 = layers.LSTMCell(units, dropout=0.5)self.rnn_cell1 = layers.LSTMCell(units, dropout=0.5)# fc, [b, 80, 100] => [b, 64] => [b, 1]self.outlayer = layers.Dense(1)def call(self, inputs, training=None):"""net(x) net(x, training=True) :train modenet(x, training=False): test:param inputs: [b, 80]:param training::return:"""# [b, 80]x = inputs# embedding: [b, 80] => [b, 80, 100]x = self.embedding(x)# rnn cell compute# [b, 80, 100] => [b, 64]state0 = self.state0state1 = self.state1for word in tf.unstack(x, axis=1): # word: [b, 100]# h1 = x*wxh+h0*whh# out0: [b, 64]out0, state0 = self.rnn_cell0(word, state0, training)# out1: [b, 64]out1, state1 = self.rnn_cell1(out0, state1, training)# out: [b, 64] => [b, 1]x = self.outlayer(out1)# p(y is pos|x)prob = tf.sigmoid(x)return probdef main():units = 64epochs = 4import timet0 = time.time()model = MyRNN(units)model.compile(optimizer=keras.optimizers.Adam(0.001),loss=tf.losses.BinaryCrossentropy(),metrics=['accuracy'],experimental_run_tf_function=False)model.fit(db_train, epochs=epochs, validation_data=db_test)model.evaluate(db_test)t1 = time.time()# 64.3 seconds, 83.4%print('total time cost:', t1 - t0)if __name__ == '__main__':main()
import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import layerstf.random.set_seed(22)
np.random.seed(22)
assert tf.__version__.startswith('2.')batchsz = 128# the most frequest words
total_words = 10000
max_review_len = 80
embedding_len = 100
(x_train, y_train), (x_test, y_test) = keras.datasets.imdb.load_data(num_words=total_words)
# x_train:[b, 80]
# x_test: [b, 80]
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=max_review_len)
x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=max_review_len)db_train = tf.data.Dataset.from_tensor_slices((x_train, y_train))
db_train = db_train.shuffle(1000).batch(batchsz, drop_remainder=True)
db_test = tf.data.Dataset.from_tensor_slices((x_test, y_test))
db_test = db_test.batch(batchsz, drop_remainder=True)
print('x_train shape:', x_train.shape, tf.reduce_max(y_train), tf.reduce_min(y_train))
print('x_test shape:', x_test.shape)class MyRNN(keras.Model):def __init__(self, units):super(MyRNN, self).__init__()# transform text to embedding representation# [b, 80] => [b, 80, 100]self.embedding = layers.Embedding(total_words, embedding_len,input_length=max_review_len)# [b, 80, 100] , h_dim: 64self.rnn = keras.Sequential([layers.LSTM(units, dropout=0.5, return_sequences=True, unroll=True),layers.LSTM(units, dropout=0.5, unroll=True)])# fc, [b, 80, 100] => [b, 64] => [b, 1]self.outlayer = layers.Dense(1)def call(self, inputs, training=None):"""net(x) net(x, training=True) :train modenet(x, training=False): test:param inputs: [b, 80]:param training::return:"""# [b, 80]x = inputs# embedding: [b, 80] => [b, 80, 100]x = self.embedding(x)# rnn cell compute# x: [b, 80, 100] => [b, 64]x = self.rnn(x)# out: [b, 64] => [b, 1]x = self.outlayer(x)# p(y is pos|x)prob = tf.sigmoid(x)return probdef main():units = 64epochs = 4import timet0 = time.time()model = MyRNN(units)model.compile(optimizer=keras.optimizers.Adam(0.001),loss=tf.losses.BinaryCrossentropy(),metrics=['accuracy'],experimental_run_tf_function=False)model.fit(db_train, epochs=epochs, validation_data=db_test)model.evaluate(db_test)t1 = time.time()# 69.3 secnods, 83%print('total time cost:', t1 - t0)if __name__ == '__main__':main()
深度学习2.0-40.LSTM原理及实战相关推荐
- [深度学习] Pytorch中RNN/LSTM 模型小结
目录 一 Liner 二 RNN 三 LSTM 四 LSTM 代码例子 概念介绍可以参考:[深度学习]理解RNN, GRU, LSTM 网络 Pytorch中所有模型分为构造参数和输入和输出构造参数两 ...
- 深度学习笔记(40) YOLO
深度学习笔记(40) YOLO 1. YOLO对象检测算法 2. 构造训练集 3. 预测 3. 非极大值抑制 1. YOLO对象检测算法 之前已经学到对象检测算法的大部分组件: 博文 组件 作用 深度 ...
- 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测大气压( air pressure)+代码实战
深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测大气压( air pressure)+代码实战 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主 ...
- 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战
深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战 # 导入需要的包和函数: from __future__ import print_function im ...
- 浅谈深度学习:基于对LSTM项目`LSTM Neural Network for Time Series Prediction`的理解与回顾
浅谈深度学习:基于对LSTM项目LSTM Neural Network for Time Series Prediction的理解与回顾#### 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学 ...
- halcon 深度学习标注_HALCON深度学习工具0.4 早鸟版发布了
原标题:HALCON深度学习工具0.4 早鸟版发布了 HALOCN深度学习工具在整个深度学习过程中扮演着重要的作用,而且在将来将扮演更重要的辅助作用,大大加快深度学习的开发流程,目前发布版本工具的主要 ...
- halcon显示坐标_HALCON深度学习工具0.4 早鸟版发布了
HALOCN深度学习工具在整个深度学习过程中扮演着重要的作用,而且在将来将扮演更重要的辅助作用,大大加快深度学习的开发流程,目前发布版本工具的主要作用是图像数据处理和目标检测和分类中的标注. 标注训练 ...
- 系统学习深度学习(六) --LSTM总结
转自:http://blog.csdn.net/shincling/article/details/49362161 1. 概念: Long short-termmemory (LSTM)is a r ...
- 【深度学习之美】LSTM长短记,长序依赖可追忆(入门系列之十四)
14.1 遗忘是件好事还是坏事? 如果我问你,遗忘,是件好事,还是坏事? 或许你会说,当然是件坏事啊,我可羡慕记忆力好的人了. 可我要告诉你,如果你到现在还记得,两岁时,隔壁家的小女孩"横刀 ...
- 序列学习——RNN网络之 LSTM 原理
文章目录 引入 发展史 LSTMs 是什么 短期记忆 长期记忆 RNN 的局限 LSTM 网络详解 符号约定 LSTM 网络分解 其他 LSTM 网络 整体模型 引入 所谓序列学习,就是输出不单单取决 ...
最新文章
- 局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归
- SAP 关于EWM的WT增强简介
- Pycharm设置pylint real-time scan实时扫描代码规范
- HDU2085:核反应堆(递推)
- nfc uid几个字节有值为0的吗_字节小哥哥自述:从实习到转正的心路历程
- Visual Studio 快捷键汇总
- java中do until_RxJava—takeUntil实践
- 勤哲cad服务器注册机,勤哲CAD服务器
- html生物代码,方块方舟全物品代码 生物召唤代码大全
- linux添加jdk权限不够
- 单招计算机专业常见面试题库,历年高职单招面试常见问题集锦
- blender使用stereoscopy渲染输出VR图片和视频
- shell脚本编程100例
- 最新版去水印小程序搭建教程
- Android底部导航栏切换页面填坑
- Ubuntu-20.04 LTS 更换国内163源、阿里源、清华源、中科大源
- 计算机专业的研究生专业方向
- linux find typelinux find用法(转)
- 赛扬处理器_英特尔发布11代奔腾、赛扬处理器 均支持AVX指令集
- [Cougaar]Cougaar快速开始指导(Cougaar Quick Start Guide)