python - TensorFlow:整合神经网络的输出
问题描述
我有一个神经网络,输入两个参数:
t = tf.placeholder(tf.float32, [None, 1])
x = tf.placeholder(tf.float32, [None, 1])
在我的损失函数中,我需要对输出进行积分t
,但我无法找到这样做的方法,因为 TensorFlow 中唯一可用的数值积分函数tf.contrib.integrate.odeint_fixed
不能将张量作为函数,因为它不能被调用:
称呼
t = tf.constant(np.linspace(0.0,1.0,100), dtype = tf.float64 )
integ = tf.contrib.integrate.odeint_fixed(model.output,
0.0,
t,
method = "rk4")
输出
...
<ipython-input-5-c79e79b75391> in loss(model, t, x)
24 0.0,
25 t,
---> 26 method = "rk4")
...
TypeError: 'Tensor' object is not callable
更不用说我对如何处理x
这个计算一无所知,它应该是固定的。
解决方案
tf.contrib.integrate.odeint_fixed
似乎用于积分常微分方程(ODE)。但是,如果我理解正确,您想要近似模型输出的定积分,我们称之为 y
,采样于t
。
为此,您可以使用梯形规则,您可以在tensorflows AUC 函数中找到可能的实现。在您的情况下,它可能如下所示:
from tensorflow.python.ops import math_ops
def trapezoidal_integral_approx(t, y):
return math_ops.reduce_sum(
math_ops.multiply(t[:-1] - t[1:],
(y[:-1] + y[1:]) / 2.),
name='trapezoidal_integral_approx')
y
你的模型的输出在哪里。
推荐阅读
- environment-variables - 使用 NextJS 中的链接更改页面上未加载的图像
- python - PyCharm 中的 mysql.connector 在使用 kwargs 运行 connect() 时会产生分段错误
- python - 如何每行打印 5 个不连续的数字?
- discord.js - 如何不发送机器人消息编辑 discord.js
- javascript - 如何正确删除模态框内的内容
- linux - 为什么 Docker “在 $PATH 中找不到可执行文件 `/bin/sh`”?
- android - 无法解决::places-maps-sdk-3.1.0-beta:在 android 中集成 Google Maps v3.1.0 时
- xcode - 只能声明实例方法 @IBAction | XCODE 错误 | 斯威夫特 5
- i18next - i18next 返回文件根目录中的对象
- json - Swift - How to extract all values with same key names