小编Fra*_*ala的帖子

如何在训练期间替换损失函数 tensorflow.keras

我想在训练期间替换与我的神经网络相关的损失函数,这是网络:

model = tensorflow.keras.models.Sequential()
        model.add(tensorflow.keras.layers.Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=input_shape))
        model.add(tensorflow.keras.layers.Conv2D(64, (3, 3), activation="relu"))
        model.add(tensorflow.keras.layers.MaxPooling2D(pool_size=(2, 2)))
        model.add(tensorflow.keras.layers.Dropout(0.25))
        model.add(tensorflow.keras.layers.Flatten())
        model.add(tensorflow.keras.layers.Dense(128, activation="relu"))
        model.add(tensorflow.keras.layers.Dropout(0.5))
        model.add(tensorflow.keras.layers.Dense(output_classes, activation="softmax"))
        model.compile(loss=tensorflow.keras.losses.categorical_crossentropy, optimizer=tensorflow.keras.optimizers.Adam(0.001), metrics=['accuracy'])
        history = model.fit(x_train, y_train, batch_size=128, epochs=5, validation_data=(x_test, y_test))
Run Code Online (Sandbox Code Playgroud)

所以现在我想换tensorflow.keras.losses.categorical_crossentropy一个,所以我做了这个:

model.compile(loss=tensorflow.keras.losses.mse, optimizer=tensorflow.keras.optimizers.Adam(0.001), metrics=['accuracy'])
    history = model.fit(x_improve, y_improve, epochs=1, validation_data=(x_test, y_test)) #FIXME bug during training
Run Code Online (Sandbox Code Playgroud)

但我有这个错误:

ValueError: No gradients provided for any variable: ['conv2d/kernel:0', 'conv2d/bias:0', 'conv2d_1/kernel:0', 'conv2d_1/bias:0', 'dense/kernel:0', 'dense/bias:0', 'dense_1/kernel:0', 'dense_1/bias:0'].
Run Code Online (Sandbox Code Playgroud)

为什么?我该如何解决?还有另一种改变损失函数的方法吗?

谢谢

python keras tensorflow loss-function

4
推荐指数
2
解决办法
2506
查看次数

AttributeError:“Tensor”对象在自定义损失函数中没有属性“numpy”(Tensorflow 2.1.0)

我想使用自定义损失函数训练模型,为此,我需要在以下方法中将张量转换为 numpy 数组:

def median_loss_estimation(y_true, y_predicted):
    a = y_predicted.numpy()
Run Code Online (Sandbox Code Playgroud)

但我有这个错误:

AttributeError: 'Tensor' object has no attribute 'numpy'
Run Code Online (Sandbox Code Playgroud)

为什么?如何将张量转换为 numpy 数组?

python numpy loss tensorflow loss-function

4
推荐指数
1
解决办法
1800
查看次数

标签 统计

loss-function ×2

python ×2

tensorflow ×2

keras ×1

loss ×1

numpy ×1