gpt4 book ai didi

python - 将输入层与另一个序列模型一起传递到自定义损失函数中

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:35 24 4
gpt4 key购买 nike

我正在尝试使用 TensorFlow 2.0 为 Keras 模型编写自定义损失函数。我按照类似答案中的说明将输入层放入损失函数中,例如

这里

Keras custom loss function: Accessing current input pattern

这里

https://datascience.stackexchange.com/questions/25029/custom-loss-function-with-additional-parameter-in-keras

但我还想将第二个模型的输出添加到损失函数中。

该错误似乎来自 v.predict(x)。起初 TensorFlow 给出一个类似的错误ValueError:当使用数据张量作为模型的输入时,您应该指定 steps 参数。

所以我尝试添加步骤arg v.predict(x,steps=n),其中n是一些整数,我得到AttributeError:“张量”对象没有属性“numpy”

X = 一些 np.random 数组Y = X 的某个函数加上噪声

def build_model():
il = tf.keras.Input(shape=(2,),dtype=tf.float32)
outl = kl.Dense(100,activation='relu')(il)
outl = kl.Dense(50,activation='relu')(outl)
outl = kl.Dense(1)(outl)
return il,outl

def f(X,a):
return (X[:,0:1] + theta*a)*a

def F(x,a):
eps = tf.random.normal(tf.shape(x),mean=loc,stddev=scale)[:,0:1]
z = tf.stack([x[:,0:1] + theta*a + eps,x[:,1:] - a],axis=1)[:,:,0]
return z

def c_loss(x=None,v=None):
def loss(y_true,y_pred):
xp = F(x,y_pred)
return kb.mean(f(x,y_pred) + v.predict(xp))
return loss

v_in,v_out = build_model()
v_model = tf.keras.Model(inputs=v_in,outputs=v_out)
v_model.compile(tf.keras.optimizers.Adam(),loss='mean_squared_error')
v_model.fit(x=X,y=Y)

c_in,c_out = build_model()
c_model = tf.keras.Model(inputs=c_in,outputs=c_out)
c_model.compile(tf.keras.optimizers.Adam(),loss=c_loss(x=c_in,v=v_model))
c_model.fit(x=X,y=Y_dummy)

理想情况下,我只希望调用 c_model.fit() 来构建神经网络以最小化函数 f(x,a) + v(x)。

最佳答案

我找到了答案here 。我遇到了“steps”错误,但实际问题是“numpy”错误。我在程序开头添加了 tf.enable_eager_execution() 来处理它。

关于python - 将输入层与另一个序列模型一起传递到自定义损失函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55796739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com