Python 简单封闭的自定义损失函数不起作用
我试图实现一个自定义的丢失函数。因此,我首先尝试通过直接封闭一个默认keras损失函数来创建一个自定义函数<代码>tf.keras.Loss.Category_crossentrophy 但它不起作用。 这怎么可能呢???我过去曾使用过自定义函数,就在今天,这让我感到震惊。 为什么不起作用?如何使这个简单的函数工作Python 简单封闭的自定义损失函数不起作用,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我试图实现一个自定义的丢失函数。因此,我首先尝试通过直接封闭一个默认keras损失函数来创建一个自定义函数tf.keras.Loss.Category_crossentrophy 但它不起作用。 这怎么可能呢???我过去曾使用过自定义函数,就在今天,这让我感到震惊。 为什么不起作用?如何使这个简单的函数工作 @tf.function def sameloss(y_true, y_pred): output = tf.keras.losses.categorical_crossentrop
@tf.function
def sameloss(y_true, y_pred):
output = tf.keras.losses.categorical_crossentropy(y_true, y_pred)
return output
我使用
model.compile(optimizer=tf.keras.optimizers.RMSprop(),loss=sameloss)
在训练中,损失只是停留在10点,没有移动。
但是,当我在编译过程中将损失直接设置为
loss=tf.keras.loss.categorical\u crossentropy
时,它运行良好,损失为零。但是,当我将其设置为自定义sameloss
函数中包含的与loss=sameloss
相同的丢失函数时,它将停止工作。我能够在TF 2.4中执行自定义丢失函数,请参考如下所示的工作代码
import numpy as np
import tensorflow as tf
print(tf.__version__)
@tf.function
def sameloss(y_true, y_pred):
output = tf.keras.losses.categorical_crossentropy(y_true, y_pred)
return output
input = np.random.rand(1000,15)
labels = np.random.rand(1000,15)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(5))
model.add(tf.keras.layers.Dense(15))
model.compile(optimizer='RMSprop', loss=sameloss)
model.fit(input, labels, epochs=5)
输出:
2.4.1
Epoch 1/5
32/32 [==============================] - 0s 1ms/step - loss: 48.8549
Epoch 2/5
32/32 [==============================] - 0s 976us/step - loss: 43.7030
Epoch 3/5
32/32 [==============================] - 0s 1ms/step - loss: 39.2598
Epoch 4/5
32/32 [==============================] - 0s 1ms/step - loss: 37.5566
Epoch 5/5
32/32 [==============================] - 0s 1ms/step - loss: 34.7458
<tensorflow.python.keras.callbacks.History at 0x7f11f03b3fd0>
2.4.1
纪元1/5
32/32[====================================]-0s 1ms/步-损耗:48.8549
纪元2/5
32/32[=================================]-0s 976us/步-损耗:43.7030
纪元3/5
32/32[====================================]-0s 1ms/步-损耗:39.2598
纪元4/5
32/32[====================================]-0s 1ms/步-损耗:37.5566
纪元5/5
32/32[====================================]-0s 1ms/步-损耗:34.7458
你能分享你用来编译模型的语句吗?@SusmitAgrawal我已经编辑过了