相关疑难解决方法(0)

如何获得keras的渐变?

我正在尝试调试keras我已经构建的模型.似乎我的渐变是爆炸性的,或者有0或者其他类似的除法.当它们通过网络反向传播时能够检查各种梯度将是方便的.像下面这样的东西是理想的:

model.evaluate(np.array([[1,2]]), np.array([[1]])) #gives the loss
model.evaluate_gradient(np.array([[1,2]]), np.array([[1]]), layer=2) #gives the doutput/dloss at layer 2 for the given input
model.evaluate_weight_gradient(np.array([[1,2]]), np.array([[1]]), layer=2) #gives the dweight/dloss at layer 2 for the given input
Run Code Online (Sandbox Code Playgroud)

python keras

13
推荐指数
1
解决办法
5922
查看次数

神经网络关于输入的导数

我训练了一个神经网络来对正弦函数进行回归,并希望计算相对于输入的一阶和二阶导数。我尝试使用这样的 tf.gradients() 函数(neural_net 是 tf.keras.Sequential 的实例):

prediction = neural_net(x_value)
dx_f = tf.gradients(prediction, x_value)
dx_dx_f = tf.gradients(dx_f, x_value)
Run Code Online (Sandbox Code Playgroud)

x_value 是一个长度为测试大小的数组。然而,这会产生预测和导数。网络的预测(蓝色曲线)基本上准确地捕获了正弦函数,但我必须将一阶导数(橙色)除以 10 倍,将二阶导数(绿色)除以 100 倍,才能得到在同一数量级。因此,一阶导数看起来(重新缩放后)没问题,但二阶导数完全不稳定。由于正弦函数的预测效果非常好,所以这里显然发生了一些有趣的事情。

python tensorflow

5
推荐指数
1
解决办法
4737
查看次数

标签 统计

python ×2

keras ×1

tensorflow ×1