簡體   English   中英

TensorFlow:集成神經網絡的輸出

[英]TensorFlow: integrate output of neural network

我有一個神經網絡,它將兩個參數作為輸入:

t = tf.placeholder(tf.float32, [None, 1])
x = tf.placeholder(tf.float32, [None, 1])

在我的損失函數中,我需要將輸出整合到t ,但我無法弄清楚這樣做的方法,因為TensorFlow中唯一可用的數值積分函數tf.contrib.integrate.odeint_fixed不能將Tensor作為函數,因為它不能被稱為:

呼叫

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是模型的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM