LossFunction

LossFunction

NetTrain 的一个选项,指定如何比较神经网络的实际输出和要求的输出.

更多信息

  • LossFunction 指定训练期间被最小化的量.
  • NetTrain[net,data,] 中,LossFunction 的可能设置包括:
  • Automatic自动将损失层添加到所有输出上,或使用现有的损失输出(默认)
    "port"将给定端口解释为损失
    losslayer将用户定义的损失层添加到网络的输出
    "port"losslayer从多输出网络的其中一个输出上计算损失
    {lspec1,lspec2,}同时最小化几个损失
    {,lpeciScaled[r],}将损失缩放 r
  • 当用 LossFunction->losslayer 指定一个损失层时, 被训练的网络必须只有一个输出端口.
  • 可被用作 losslayer 的网络层包括:
  • Automatic自动选择损失(默认)
    MeanAbsoluteLossLayer[]输出和目标间的平均距离
    MeanSquaredLossLayer[]输出与目标间的平方距离的平均值
    CrossEntropyLossLayer[form]输出和目标概率之间的距离
    ContrastiveLossLayer[]以目标为条件,输出最大化和最小化的优度
    NetGraph[], NetChain[], ThreadingLayer[], etc.任意具有 "Input" 或可选 "Target" 端口的网络
  • 当为端口自动选择损失层时,要使用的损失层应基于输出连接到端口的网络中的层,如下所示:
  • SoftmaxLayer[]使用 CrossEntropyLossLayer["Index"]
    ElementwiseLayer[LogisticSigmoid]使用 CrossEntropyLossLayer["Binary"]
    NetPairEmbeddingOperator[]使用 ContrastiveLossLayer[]
    其他非损失层使用 MeanSquaredLossLayer[]
    损失层 不变
  • 一般情况下,损失端口的输出是一个标量值. 当它是一个数组时,损失值被计算为元素的.
  • 用户定义的损失层可以是具有多个输出端口的网络. 那么,所有输出端口的值的和将被作为要最小化的损失,并以单独的子损失汇报汇报每个端口的值.
  • 如果所添加的损失层有一个输入端口 ("Input"),它将被连接到网络的输出端,并且训练数据的键应给出端口来为网络提供输入(参见下面左侧的图).
  • 如果所添加的损失层有两个输入端口 ("Input""Target"),则输入将与网络的输出连接,而训练数据将为目标 (Target) 提供输入,并使用网络的输出端口的名称(参见下面中间的图) . 通常情况下,该名称为 "Output",所以常见情景是形式为 <|"Input"->{in1,in2,},"Output"->{out1,out2,}|> 的训练数据,经常被写为 {in1,in2,}->{out1,out2,}{in1->out1,in2->out2,}.
  • 如果连接了多个这样的层,则训练数据中应该有一个端口为每个层的目标提供输入(参见下面右侧的图).

范例

基本范例  (4)

MeanSquaredLossLayer 来训练一个简单的网络,当 SoftmaxLayer 没有产生损失时对输出应用默认的损失:

在一组输入上运行训练过的网络:

指定一个不同的损失层,与网络的输出连接. 首先创建一个损失层:

损失层接受一个输入和目标,产生损失:

在训练时使用该损失层:

在一组输入上运行训练过的网络:

创建一个网络,接受一个长度为 2 的向量,产生类别标签 LessGreater

NetTrain 会自动将 CrossEntropyLossLayer 对象与正确的类别编码器一起使用:

在一组输入上运行训练过的网络:

创建一个明确的损失层,期望目标以每个类别的概率形式出现:

训练数据应由概率向量组成,而不是符号类别:

在一组输入上运行训练过的网络:

先从要训练的 "evaluation net" 开始:

创建一个 "loss net",明确计算该 evaluation net(此处,自定义损失等价于 MeanSquaredLossLayer)的损失:

在一些合成数据上训练网络,指定名为 "Loss" 的输出端口应被诠释为损失:

NetExtract 获取训练过的 "evaluation" 网络:

也可以使用 Part 语句:

在平面上绘制网络的输出:

创建一个训练网络,计算输出和多个明确的损失:

该网络需要一个输入和目标来产生输出和损失:

用特定输出作为损失进行训练,忽略其他输出:

测量训练后单个输入对的损失:

指定多个损失,同时进行训练:

NetTake 移除其他部分,只保留想要的输出和输入:

在一组输入上运行该网络:

Wolfram Research (2018),LossFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LossFunction.html (更新于 2022 年).

文本

Wolfram Research (2018),LossFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LossFunction.html (更新于 2022 年).

CMS

Wolfram 语言. 2018. "LossFunction." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2022. https://reference.wolfram.com/language/ref/LossFunction.html.

APA

Wolfram 语言. (2018). LossFunction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/LossFunction.html 年

BibTeX

@misc{reference.wolfram_2024_lossfunction, author="Wolfram Research", title="{LossFunction}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/LossFunction.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_lossfunction, organization={Wolfram Research}, title={LossFunction}, year={2022}, url={https://reference.wolfram.com/language/ref/LossFunction.html}, note=[Accessed: 22-November-2024 ]}