gpt4 book ai didi

python - Keras:无法在我的模型中使用自定义损失函数

转载 作者:行者123 更新时间:2023-12-04 09:46:10 26 4
gpt4 key购买 nike

我正在使用 Keras 构建语言模型,并且我想使用 perplexity 作为我的损失函数,但是当我尝试使用我的损失函数编译我的模型时,我收到一个值错误,说损失函数是未知的。

我的损失函数如下所示:

def perplexity_loss(y_true, y_pred):
"""
The perplexity metric. Why isn't this part of Keras yet?!
https://stackoverflow.com/questions/41881308/how-to-calculate-perplexity-of-rnn-in-tensorflow
https://github.com/keras-team/keras/issues/8267
"""
cross_entropy = keras.losses.SparseCategoricalCrossentropy(y_true, y_pred)
perplexity = tf.keras.backend.exp(cross_entropy)
return perplexity

这就是我启动模型的方式:
# define model
model = Sequential()
model.add(Embedding(vocab_size, 500, input_length=max_length-1))
model.add(LSTM(750))
model.add(Dense(vocab_size, activation='softmax'))
# compile network
model.compile(loss='perplexity_loss', optimizer='adam', metrics=['accuracy'])
# fit network
model.fit(X, y, epochs=150, verbose=2)

我收到以下错误:
ValueError: Unknown loss function:perplexity

最佳答案

导致错误的原因是您传递的是字符串( 'perplexity_loss' )而不是函数。以下应该可以解决问题:

model.compile(loss=perplexity_loss, optimizer='adam', metrics=['accuracy'])

请注意,当您想再次加载模型时,您必须使用:
from keras.models import load_model

model = load_model('my_model.h5', custom_objects={'perplexity_loss': perplexity_loss})

关于python - Keras:无法在我的模型中使用自定义损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62101327/

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