当我使用Theano或Tensorflow训练我的神经网络时,他们将报告每个时期称为"损失"的变量.
我该如何解释这个变量?更高或更低的损失,或者它对我的神经网络的最终性能(准确性)意味着什么?
machine-learning mathematical-optimization neural-network deep-learning objective-function
我想在Python中添加用于xgboost的kappa评估指标.我无法理解如何将Python函数与xgboost连接起来.
根据xgboost文档,"用户可以添加多个评估指标,对于python用户,请记住将指标作为参数对列表而不是映射传递,以便后者'eval_metric'不会覆盖前一个"
这已在xgboost的Github页面中针对R而不是针对Python而提出.
例如,如果kappa函数是:
def kappa(preds, y):
# perform kappa calculation
return score
Run Code Online (Sandbox Code Playgroud)
如何使用xgboost实现它?'kappa'在eval_metric参数中指定为字符串会导致XGBoostError: unknown evaluation metric type: kappa.
同样指定kappa方法对象的结果XGBoostError: unknown evaluation metric type: <function kappa at 0x7fbef4b03488>.
如何在python中的xgboost中使用自定义评估指标?
该folloiwng代码不工作,在那里aucerr和aoeerr被定制的评估指标,它正在与只有一个eval_metric要么aucerr或aoeerr
prtXGB.fit(trainData, targetVar, early_stopping_rounds=10,
eval_metric= [aucerr, aoeerr], eval_set=[(valData, valTarget)])
Run Code Online (Sandbox Code Playgroud)
但是,以下带有内置评估指标的代码正在运行
prtXGB.fit(trainData, targetVar, early_stopping_rounds=10,
eval_metric= ['auc', 'logloss'], eval_set=[(valData, valTarget)])
Run Code Online (Sandbox Code Playgroud)
这是我的自定义函数
def aucerr(y_predicted, y_true):
labels = y_true.get_label()
auc1 = metrics.roc_auc_score(labels,y_predicted)
return 'AUCerror', abs(1-auc1)
def aoeerr(y_predicted, y_true):
labels = y_true.get_label()
actuals = sum(labels)
predicted = sum(y_predicted)
ae = actuals/predicted
return 'AOEerror', abs(1-ae)
Run Code Online (Sandbox Code Playgroud) 最初由 IJ Goodfellow 提出的 GAN 使用以下损失函数,
D_loss = - log[D(X)] - log[1 - D(G(Z))]
G_loss = - log[D(G(Z))]
Run Code Online (Sandbox Code Playgroud)
因此,鉴别器尝试最小化 D_loss,生成器尝试最小化 G_loss,其中 X 和 Z 分别是训练输入和噪声输入。D(.) 和 G(.) 分别是鉴别器和生成器神经网络的映射。
正如原始论文所说,当 GAN 被训练几个步骤时,它会达到一个生成器和判别器都无法改进的点,并且 D(Y) 到处都是 0.5,Y 是判别器的一些输入。在这种情况下,当 GAN 被充分训练到这一点时,
D_loss = - log(0.5) - log(1 - 0.5) = 0.693 + 0.693 = 1.386
G_loss = - log(0.5) = 0.693
Run Code Online (Sandbox Code Playgroud)
那么,为什么我们不能使用 D_loss 和 G_loss 值作为评估 GAN 的指标呢?
如果两个损失函数偏离了这些理想值,那么 GAN 肯定需要训练好或架构需要设计好。正如原始论文中的定理 1 所讨论的,这些是 D_loss 和 G_loss 的最佳值,但为什么不能将它们用作评估指标?
loss neural-network objective-function generative-adversarial-network
我想知道如何使用 or-tools 定义复杂的目标函数(如果可能的话)。
下面的基本示例展示了如何使用 python 中的 Or-tools 解决基本线性问题:
solver = pywraplp.Solver('lp_pricing_problem', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)
# Define variables with a range from 0 to 1000.
x = solver.NumVar(0, 1000, 'Variable_x')
y = solver.NumVar(0, 1000, 'Variable_y')
# Define some constraints.
solver.Add(x >= 17)
solver.Add(x <= 147)
solver.Add(y >= 61)
solver.Add(y <= 93)
# Minimize 0.5*x + 2*y
objective = solver.Objective()
objective.SetCoefficient(x, 0.5)
objective.SetCoefficient(y, 2)
objective.SetMinimization()
status = solver.Solve()
# Print the solution
if status == solver.OPTIMAL:
print("x: {}, y: {}".format(x.solution_value(), y.solution_value())) # x: 17.0, …Run Code Online (Sandbox Code Playgroud) python linear-programming least-squares or-tools objective-function