gpt4 book ai didi

python - 如何使用 MLPClassifier Sklearn 在神经网络中使用自定义损失函数?

转载 作者:行者123 更新时间:2023-12-04 17:43:10 25 4
gpt4 key购买 nike

我想使用自定义损失函数在 scikit learn 中训练神经网络;使用 MLP 分类器。我想更重视更大的值(value)。因此,我想使用类似于均方误差的方法,但将分子乘以 y。因此,它看起来像:

1/n∑y(yi-y(hat)i)^2

这是我的模型的代码:

mlp10 = MLPClassifier(hidden_layer_sizes=(150,100,50,25,10), max_iter=1000, 
random_state=42)
mlp10.fit(X_train, y_train)

如何修改损失函数?

最佳答案

我不相信你可以直接修改损失函数,因为在分类器和 documentation 的构造中没有它的参数。明确指定它正在使用对数损失函数进行优化。如果您愿意灵活一点,您可以在训练前简单地通过转换 y 值来获得您正在寻找的效果,然后使用逆变换来恢复测试后预测 y

例如,在您定义transforminverse_transform 为:

def transform(y):
return y ** 2

def inverse_transform(y_prime):
return math.sqrt(y_prime)

会导致更大的 y 值对训练有更大的影响。显然,您可以尝试不同的转换,看看哪种转换最适合您的用例。关键是要确保 transform 是超线性的。

在训练之前你需要做的:

y_train = map(transform, y_train)

在调用 predict 之后:

y_predict = model.predict(x)
y_predict = map(inverse_transform, y_predict)

关于python - 如何使用 MLPClassifier Sklearn 在神经网络中使用自定义损失函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53531759/

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