在将值分配给神经网络

时间:2017-10-25 15:05:26

标签: python numpy tensorflow

我正在使用DCGAN code。我需要通过添加一个函数来修改给予其中一个神经网络的the reward,该函数将获取该神经网络的输出,对其进行分析并对其进行惩罚。所以我的损失函数看起来像:

self.g_loss = self.g_loss + self.penalty

问题是

  • 这个惩罚函数只将numpy数组作为输入(我无法修改它),

  • 神经网络输出是一个tf.tensor,

  • 并且由于尚未将值分配给神经网络(从技术上讲,它还没有被构建)我既不能运行.eval()也不会{{{} 1}}。

那么在这种情况下如何将张量流量张量转换为numpy数组呢?

1 个答案:

答案 0 :(得分:2)

Tensorflow wrapping Python functions and passing tensors to themtf.py_functf.pyfunc。但是,您不能使用此损失函数来训练网络,因为Tensorflow不会自动区分numpy代码。

幸运的是,autograd does automatically differentiate numpy code。如果你使用它,在另一个#include <sys/user.h> 调用中,你可以得到渐变,然后可以put back into the tensorflow graph on the backward pass

以下是this gist中如何完成所有操作的示例。