Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 如何将Tensorflow网络分成两部分,并保持梯度反向传播?_Neural Network_Tensorflow_Autoencoder - Fatal编程技术网

Neural network 如何将Tensorflow网络分成两部分,并保持梯度反向传播?

Neural network 如何将Tensorflow网络分成两部分,并保持梯度反向传播?,neural-network,tensorflow,autoencoder,Neural Network,Tensorflow,Autoencoder,我试图用tensorflow实现“深卷积逆图形网络”,这意味着我必须对梯度做一些棘手的事情 基本上,我想把一个自动编码器分成两个独立的网络。我不需要,但那很方便。目的是对反向传播步骤中的梯度流进行一些无法描述的修改。你知道怎么做吗?以下是我想要实现的目标的模式: 显而易见,对于正向路径,它意味着将一个网络的输出插入另一个网络。不幸的是,我无法看到如何反向传播错误 目前我最好的办法是复制一个权重矩阵,即将W3复制到Encoder作为W2.5,然后将W3的梯度复制到Encoder作为W2.5的梯度

我试图用tensorflow实现“深卷积逆图形网络”,这意味着我必须对梯度做一些棘手的事情

基本上,我想把一个自动编码器分成两个独立的网络。我不需要,但那很方便。目的是对反向传播步骤中的梯度流进行一些无法描述的修改。你知道怎么做吗?以下是我想要实现的目标的模式:

显而易见,对于正向路径,它意味着将一个网络的输出插入另一个网络。不幸的是,我无法看到如何反向传播错误


目前我最好的办法是复制一个权重矩阵,即将W3复制到Encoder作为W2.5,然后将W3的梯度复制到Encoder作为W2.5的梯度。但是在这个模式中肯定有一个更简单的方法或者一个明显的误解。

一种方法是将“非TF”环境嵌入到Tensorflow操作符中。然后Tensorflow可以负责向前传播激活,向后传播梯度
tf.py_func
是从Tensorflow图调用非Tensorflow的一种方法;另一种方法是定义一个自定义C++操作符。可以为操作符定义自定义梯度函数(有关如何使用tf.py_func的信息,请参阅);您的自定义渐变可以执行任何您喜欢的无法形容的恐怖。