
LSTM(TensorFlow)
若初雪舞
可爱的程序媛
展开
-
TensorFlow中多维矩阵运算
2维、3维互相运算原创 2021-03-24 10:16:00 · 665 阅读 · 0 评论 -
sess.run(tf.global_initializer())等价于 with sess.as_default(): tf.global_variables_initializer().run()
global_variables_initializer 返回一个用来初始化 计算图中 所有global variable的 op。 函数中调用了 variable_initializer() 和 global_variables() global_variables() 返回一个 Variable list ,里面保存的是 gloabal variables。 variable_initializer() 将 Variable list 中的所有 Variable 取出来..转载 2021-02-08 17:43:38 · 283 阅读 · 0 评论 -
tf.Graph().as_default()
tf.Graph() 表示实例化了一个类,一个用于 tensorflow 计算和表示用的数据流图,通俗来讲就是:在代码中添加的操作(画中的结点)和数据(画中的线条)都是画在纸上的“画”,而图就是呈现这些画的纸,你可以利用很多线程生成很多张图,但是默认图就只有一张。tf.Graph().as_default() 表示将这个类实例,也就是新生成的图作为整个 tensorflow 运行环境的默认图,如果只有一个主线程不写也没有关系,tensorflow 里面已经存好了一张默认图,可以使用tf.get_defa转载 2021-02-07 21:01:24 · 197 阅读 · 0 评论 -
TensorFlow的梯度优化的两种方式(minimize或apply_gradients函数)
先创建一个优化器对象,eg:optimizer = tf.train.AdagradOptimizer(learning_rate),这里的Adagrad是一种优化算法,还有其他的优化器(1)直接用优化器对象自带的优化方式:optimizer_op = optimizer.minimize(cost),cost是损失函数minimize()操作可以计算出梯度,并且将梯度作用在变量上(2)如果有自己处理梯度的方式,则可以按照这三步骤使用optimizer :使用函数tf.gradients()计算原创 2021-02-07 18:52:38 · 3472 阅读 · 0 评论 -
tf.clip_by_global_norm详解
我的代码是:grads, _ = tf.clip_by_global_norm ( tf.gradients(self.cost, self.tvars ) , config.max_grad_norm ) Gradient Clipping的引入是为了处理梯度爆炸的问题。当在一次迭代中权重的更新过于迅猛的话,很容易导致“损失散度”。Gradient Clipping的直观作用就是让权重的更新限制在一个合适的范围。主要过程:(1)先设置一个clip_gradient(clip_norm或max_.原创 2021-02-07 18:19:37 · 2811 阅读 · 0 评论 -
LSTM的梯度、学习率、前项传播等
梯度:在每一次学习迭代中使用反向传播算法计算损失函数对每一个权重或偏置的导数从权重或偏置中减去这个梯度方向的标量值以降低网络的损失。由于梯度的反方向是函数下降最快的方向,为了控制参数调整的速度,算法使用梯度乘以一个步长来当作参数的修正量,这个步长又叫做学习率,即梯度 * 学习率作为参数的修正量 学习率作为控制网络学习速度的超参数,设置过小则模型的收敛速度就会变得很慢,设置过大则会发生振荡导致网络无法收敛。因此通常在训练开始时使用较大的学习率以加快训练速度,等逐渐接近损失最小值点时再采用...原创 2021-02-01 11:59:05 · 5627 阅读 · 0 评论 -
Tensorflow中LSTM的各张量维度名称和别名,及特定名称的解释
LSTM是由每个cell组成的,每个cell里有3个门:输入门、遗忘门、输出门;每个cell有4个前馈网络层,其实就是4个激活函数,分别是σ、σ、tanh、σ;这些前馈网络层里有神经元,即隐藏神经元,每个前馈网络层里的隐藏神经元个数都是相同的,即num_units,也写作hidden_size,每个ht...原创 2021-02-01 11:46:59 · 1488 阅读 · 7 评论