tensorflow 查看梯度方式

1. 为什么要查看梯度

对于初学者来说网络经常不收敛,loss很奇怪(就是不收敛),所以怀疑是反向传播中梯度的问题

(1)求导之后的数(的绝对值)越来越小(趋近于0),这就是梯度消失

(2)求导之后的数(的绝对值)越来越大(特别大,发散),这就是梯度爆炸

所以说呢,当loss不正常时,可以看看梯度是否处于爆炸,或者是消失了,梯度爆炸的话,网络中的W也会很大,人工控制一下(初始化的时候弄小点等等肯定还有其它方法,只是我不知道,知道的大神也可以稍微告诉我一下~~),要是梯度消失,可以试着用用resnet,densenet之类的

2. tensorflow中如何查看梯度

tf.gradients(y,x)这里的就是y对于x的导数(dy/dx),x和y一定要有关联哦~

直接tf.gradients(y_, weight1)就可以了~

以上这篇tensorflow 查看梯度方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • tensorflow使用指定gpu的方法

    TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief [1]  . Tensorflow拥有多层级结构,可部署于各类服务器.PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究 . TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括Ten

  • 基于TensorFlow中自定义梯度的2种方式

    前言 在深度学习中,有时候我们需要对某些节点的梯度进行一些定制,特别是该节点操作不可导(比如阶梯除法如 ),如果实在需要对这个节点进行操作,而且希望其可以反向传播,那么就需要对其进行自定义反向传播时的梯度.在有些场景,如[2]中介绍到的梯度反转(gradient inverse)中,就必须在某层节点对反向传播的梯度进行反转,也就是需要更改正常的梯度传播过程,如下图的 所示. 在tensorflow中有若干可以实现定制梯度的方法,这里介绍两种. 1. 重写梯度法 重写梯度法指的是通过tensorf

  • TensorFlow实现自定义Op方式

    『写在前面』 以CTC Beam search decoder为例,简单整理一下TensorFlow实现自定义Op的操作流程. 基本的流程 1. 定义Op接口 #include "tensorflow/core/framework/op.h" REGISTER_OP("Custom") .Input("custom_input: int32") .Output("custom_output: int32"); 2. 为Op实现

  • tensorflow 实现自定义layer并添加到计算图中

    目的 将用户自定义的layer结合tensorflow自带的layer组成多层layer的计算图. 实现功能 对2D图像进行滑动窗口平均,并通过自定义的操作layer返回结果. import tensorflow as tf import numpy as np sess = tf.Session() #将size设为[1, 4, 4, 1]是因为tf中图像函数是处理四维图片的. #这四维依次是: 图片数量,高度, 宽度, 颜色通道 x_shape = [1,4,4,1] x_val = np.

  • TensorFlow梯度求解tf.gradients实例

    我就废话不多说了,直接上代码吧! import tensorflow as tf w1 = tf.Variable([[1,2]]) w2 = tf.Variable([[3,4]]) res = tf.matmul(w1, [[2],[1]]) grads = tf.gradients(res,[w1]) with tf.Session() as sess: tf.global_variables_initializer().run() print sess.run(res) print se

  • TensorFlow设置日志级别的几种方式小结

    TensorFlow中的log共有INFO.WARN.ERROR.FATAL 4种级别.有以下几种设置方式. 1. 通过设置环境变量控制log级别 可以通过环境变量TF_CPP_MIN_LOG_LEVEL进行设置,TF_CPP_MIN_LOG_LEVEL的不同值的含义分别如下: Level Level for Humans Level Description 0 DEBUG all messages are logged (Default) 1 INFO INFO messages are no

  • tensorflow 查看梯度方式

    1. 为什么要查看梯度 对于初学者来说网络经常不收敛,loss很奇怪(就是不收敛),所以怀疑是反向传播中梯度的问题 (1)求导之后的数(的绝对值)越来越小(趋近于0),这就是梯度消失 (2)求导之后的数(的绝对值)越来越大(特别大,发散),这就是梯度爆炸 所以说呢,当loss不正常时,可以看看梯度是否处于爆炸,或者是消失了,梯度爆炸的话,网络中的W也会很大,人工控制一下(初始化的时候弄小点等等肯定还有其它方法,只是我不知道,知道的大神也可以稍微告诉我一下~~),要是梯度消失,可以试着用用resn

  • TensorFlow查看输入节点和输出节点名称方式

    TensorFlow 定义输入节点名称input_name: with tf.name_scope('input'): bottleneck_input = tf.placeholder_with_default( bottleneck_tensor, shape=[batch_size, bottleneck_tensor_size], name='Mul') TensorFlow查看pb数据库里面的输入节点和输出节点: import tensorflow as tf import os mo

  • Tensorflow之梯度裁剪的实现示例

    tensorflow中的梯度计算和更新 为了解决深度学习中常见的梯度消失(gradient explosion)和梯度爆炸(gradients vanishing)问题,tensorflow中所有的优化器tf.train.xxxOptimizer都有两个方法: compute_gradients apply_gradients compute_gradients 对于compute_gradients方法,计算var_list中参数的梯度,使得loss变小.默认情况下,var_list为Grap

  • tensorflow: 查看 tensor详细数值方法

    问题 tensor详细数值 不能直接print打印: import tensorflow as tf x = tf.constant(1) print x 输出: Tensor("Const:0", shape=(), dtype=int32) 原因: print只能打印输出shape的信息,而要打印输出tensor的值,需要借助 tf.Session,tf.InteractiveSession. 因为我们在建立graph的时候,只建立 tensor 的 结构形状信息 ,并没有 执行

  • Tensorflow 查看变量的值方法

    定义一个变量,直接输出会输出变量的属性,并不能输出变量值.那么怎么输出变量值呢?请看下面得意 import tensorflow as tf biases=tf.Variable(tf.zeros([2,3]))#定义一个2x3的全0矩阵 sess=tf.InteractiveSession()#使用InteractiveSession函数 biases.initializer.run()#使用初始化器 initializer op 的 run() 方法初始化 'biases' print(se

  • tensorflow查看ckpt各节点名称实例

    运行下列脚本,可以打印出模型各个节点变量的名称: from tensorflow.python import pywrap_tensorflow import os checkpoint_path=os.path.join('model.ckpt-131805') reader=pywrap_tensorflow.NewCheckpointReader(checkpoint_path) var_to_shape_map=reader.get_variable_to_shape_map() for

  • Tensorflow的梯度异步更新示例

    背景: 先说一下应用吧,一般我们进行网络训练时,都有一个batchsize设置,也就是一个batch一个batch的更新梯度,能有这个batch的前提是这个batch中所有的图片的大小一致,这样才能组成一个placeholder.那么若一个网络对图片的输入没有要求,任意尺寸的都可以,但是我们又想一个batch一个batch的更新梯度怎么办呢? 操作如下: 先计算梯度: # 模型部分 Optimizer = tf.train.GradientDescentOptimizer(1) gradient

  • Tensorflow 多线程设置方式

    一. 通过 ConfigProto 设置多线程 (具体参数功能及描述见 tensorflow/core/protobuf/config.proto) 在进行 tf.ConfigProto() 初始化时,可以通过设置相应的参数,来控制每个操作符 op 并行计算的线程个数或 session 线程池的线程数.主要涉及的参数有以下三个: 1. intra_op_parallelism_threads 控制运算符op内部的并行 当运算符 op 为单一运算符,并且内部可以实现并行时,如矩阵乘法,reduce

  • 详解TensorFlow查看ckpt中变量的几种方法

    查看TensorFlow中checkpoint内变量的几种方法 查看ckpt中变量的方法有三种: 在有model的情况下,使用tf.train.Saver进行restore 使用tf.train.NewCheckpointReader直接读取ckpt文件,这种方法不需要model. 使用tools里的freeze_graph来读取ckpt 注意: 如果模型保存为.ckpt的文件,则使用该文件就可以查看.ckpt文件里的变量.ckpt路径为 model.ckpt 如果模型保存为.ckpt-xxx-

  • pytorch查看模型weight与grad方式

    在用pdb debug的时候,有时候需要看一下特定layer的权重以及相应的梯度信息,如何查看呢? 1. 首先把你的模型打印出来,像这样 2. 然后观察到model下面有module的key,module下面有features的key, features下面有(0)的key,这样就可以直接打印出weight了,在pdb debug界面输入p model.module.features[0].weight,就可以看到weight,输入 p model.module.features[0].weig

随机推荐