VMware密钥
UG5J2-0ME12-M89WY-NPWXX-WQH88
ubantu
链接:https://pan.baidu.com/s/1YXtdV0W1uyiRz7M8rW2HKA
提取码:n3un
–来自百度网盘超级会员V4的分享
VMware
链接:https://pan.baidu.com/s/1SOercRFS45ZE1AuNjKnV5Q
提取码:kolb
–来自百度网盘超级会员V4的分享
Ubantu教程
https://blog.csdn.net/xijieyuan2qi/article/details/102671300
修改BIOS系统
VMware复制粘贴方法
在Ubantu中安装Docker
句向量
给图通过网络到向量
Encoding压缩–RNN最擅长
Decoding解压
我们用Encoder将原始的我爱莫烦Python转变成标准的向量表达;
在用各种Decoder将向量化表达转变成其他的表达形式,其中就可以是翻译,图片,情感和对话
拿到循环神经网络对句子的理解,通过encoding过程,得到句向量。
用另一个循环神经网络,作为Decoder,解码器,基于句向量生成下文。
简而言之,Encoder负责理解上文,Decoder负责将思考怎么样在理解的句子的基础上做任务。这一套方法就是在自然语言处理中风靡一时的Seq2Seq框架。
向量表示是深度学习成功的关键。对句子的理解,就是在多维空间中给这个句子安排一个合适的位置
翻译
做seq2seq. 意思是将一个 sequence 转换成另一个 sequence。也就是用Encoder压缩并提炼第一个sequence的信息,然后用Decoder将这个信息转换成另一种语言
Seq2Seq
导入库–初始化–
Encoder
Embedding(生成查询表)–输入输出尺寸–参数初始化–LSTM函数
Decoder
Embedding(生成表)–尺寸–参数初始化----LSTMCell–Dense
(LSTM模型后增加Dense(全连接)层的目的是什么?
–作用汇聚网络信息,用于分类或其他。。)
BasicDecoder的作用就是定义一个封装了decoder应该有的功能的实例
Train decoder
tfa.seq2seq.TrainingSampler,简单读取输入的训练采样器
predict decoder
GreedyEmbeddingSampler-从输出分布中随机取样的推断取样器。
RNN的Cell来说吧,cell其实就是一个RNN的一次网络
SparseCategoricalCrossentropy
交叉熵损失函数-代替均方差损失函数与sigmoid激活函数组合
Encode–压缩
embedded = self.enc_embeddings(x) 构建查询表
tf.zero构建零向量–self.encoder给零向量填充
inference推测函数
Encode调用压缩函数
定义decoder对象后初始化
variable是一种可以不断变化的变量,符合反向传播
tf.fill
当value为0时,该方法等同于tf.zeros()
当value为1时,该方法等同于tf.ones()
initial_state初始状态
np.zeros --初始化
self.decoder_eval.step
Eval–测试—step–动态
model.train()的作用是启用 Batch Normalization 和 Dropout。
model.eval()的作用是不启用 Batch Normalization 和 Dropout
tf.fill(dims, value, name=None)
创建一个维度为dims,值为value的tensor对象.该操作会创建一个维度为dims的tensor对象,并将其值设置为value,该tensor对象中的值类型和value一致
当value为0时,该方法等同于tf.zeros()
当value为1时,该方法等同于tf.ones()
可以把field比喻成一张图纸,图纸告诉你我们要做什么,
但是具体完成这张图纸的,是由“工人”,token_indexers来完
用CNN解决
三个卷积核
padding卷积的两种方式“SAME”和“VALID”
注意力机制
盲区–自动脑补
黄斑–注意力集中区
无法记忆长句子。当处理完所有输入序列后,模型对最初的输入单词已经**“忘得差不多了”**。也就是编码器输出的并不能很好地表征长句子的开头部分信息。所以注意力机制就是为了解决这个问题提出的
seq2seq经典模型
seq2seq中,其思想就是构造两个循环神经网络(RNNs),就是编码器和解码器
seq2seq
两个RNN
Encoder decoder
注意力机制主要包含三个
编码器的传出
上个解码器的传入
中间的处理
非常好的推荐
https://blog.csdn.net/truth_01/article/details/100926422
注意力图解过程
准备隐状态
为每个编码器隐状态打分
把所有的分数进行softmax
把每个编码器隐状态和对应的注意力分布相乘
对齐向量求和
把context vector输入到解码器中
DataFrame.sample
返回指定数量的随机样本
加入注意力机制,最开始的预测结果也会变好
最开始预测成渣渣,但是后面预测结果会好很多。
你看刚训练几轮其实效果就已经很不错了,可见注意力的强大。
Attention
导库–seq2seq类(模型)–初始化
Encoder
生成表( keras.layers.Embedding)
初始输入数据规格–随机生成数据–LSTM
Decoder
1、注意力机制(tfa.seq2seq.LuongAttention)
tf.contrib.seq2seq.BahdanauAttention (additive attention, ref.)
tf.contrib.seq2seq.LuongAttention (multiplicative attention, ref.)
2、tfa.seq2seq.AttentionWrapper
为RNN的循环模块添加注意力机制
AttentionWrapper 的 call 函数接收input和state然后输出output和下一个state,这就符合 RNNCell 的调用函数,即 output, next_state = RNNCell(input, state) 所以就可以像使用普通 RNNCell 一样使用带注意力机制的 RNNCell 了。
tf.keras.layers.LSTMCell 在整个时间序列输入中处理一个步骤,
而 tf.keras.layer.LSTM处理整个序列
初始化注意力机制(self.attention)
定义大小attention_layer_size
alignment_history=True 注意力可视化
生成表–初始化规格–随机生成数据
定义全连接层
Train decoder
tfa.seq2seq.BasicDecoder
用于训练和推理的基本抽样解码器。
RNN cell是循环神经网络最基本的单元
tfa.seq2seq.sampler.TrainingSampler()
简单读取其输入的训练采样器。
输出给全连接层output_layer=decoder_dense
交叉熵损失函数
keras.losses.SparseCategoricalCrossentropy
优化器Adam keras.optimizers.Adam(
Clipnorm–对梯度进行裁剪,通过控制梯度的最大范式,防止梯度爆炸的问题,
Predict decoder
构建解码器
RNN cell是循环神经网络最基本的单元
从输出分布中取最大值的推断采样器。
GreedyEmbeddingSampler
输出给全连接层output_layer=decoder_dense
Encode压缩
创建表self.enc_embeddings(x)
初始化zero—赋值self.encoder–>keras.layers.LSTM
set_attention注意力机制函数
调用encode 压缩函数—
Inference函数
初始化解码器
Variable是数据类型 对象有更多的属性
tf.fill 创建全0/1
引入注意力机制
创建所需 pred_id
model.train()的作用是启用 Batch Normalization 和 Dropout。用于训练
model.eval()的作用是不启用 Batch Normalization 和 Dropout。用于测试
transpose 作用是改变矩阵序列
s.alignment_history.mark_used() —发出警告
logits 就是一个向量,下一步将被投给 softmax 的向量。
Train_logits
引入注意力机制–
构建表–self.dec_embeddings
tfa.seq2seq.BasicDecoder—self.decoder_train
用于训练和推理的基本抽样解码器。
rnn_output的输出
Step()函数—动态系统的阶跃响应绘图。
tf.GradientTape()–自动求导
调用logits转向量–下一步传入softmax
交叉熵损失函数self.cross_entropy
GradientTape是eager模式下计算梯度用的
self.opt.apply_gradients 梯度修剪