我的模型的loss function是自己设计的,有没有人了解tensorflow里面怎么自定义一个loss function?
2个回答
有两个办法:
其一、你自己用C++写一个。你需要把tensorflow的源代码下载下来,然后自己用C++写一个函数。可参考Adding an op。
其二、你把你自己定义的损失函数用tensorflow中的标准函数表示出来。比如你需要MSE(虽然这个已经有了),可以写成
loss = tf.reduce_mean(tf.square(tf.sub(y_real, y_pred)))
比如说你有一个function: f(x1,x2) = exp(x1)/(exp(x1)+exp(x2)) 或者可以写成 f(x1,x2) = 1/(1+exp(x2-x1)).
你可以这么定义:
x = np.float32(np.repeat(0.5,2).reshape(2))
varX = tf.Variable(x, name='varX', dtype=tf.float32)
varX1 = tf.slice(varX,begin=[0],size=[1])
varX2 = tf.slice(varX,begin=[1],size=[1])
f = -1./(1+tf.exp(varX2-varX1))
opt = tf.train.GradientDescentOptimizer(your_learning_rate)
train = opt.minimize(f)