我尝试做一个自定义的损失函数,但我得到了错误。这应该是cyclegan的文本这是损失函数:
def sloss(ytrue, ypred):
nump = 0
print(nump)
for i in range(len(ypred[0])):
if int(round(ypred[0][i])) != int(ytrue[0][i]):
nump+=1
return(nump)
产品型号:
models = tf.keras.models.Sequential()
models.add(Dense(100, activation='relu'))
models.add(Dense(100, activation='linear'))
models.add(Dense(100, activation='sigmoid'))
models.compile(loss=sloss, optimizer='adam')
models.fit(sx(1,100 np arr), randes(1,100 np arr), epochs=1)
1条答案
按热度按时间xuo3flqw1#
损失函数需要基于ypred计算,否则无法计算梯度。您的损失函数只是多个
1
的和:这里没有ypred。这就是为什么梯度不能计算和错误信息。另一个问题是你的损失函数在区间上是常数,也就是说,导数在任何地方都是零。优化器不能在梯度为零的情况下工作。