LinearLayer

LinearLayer[n]

表示一个可训练的、全连接的网络层,可计算 ,输出向量的大小为 n.

LinearLayer[{n1,n2,}]

表示输出维度为 n1×n2× 的数组的网络层.

LinearLayer[]

将输出数组的维度从前后的连接中推断出来.

LinearLayer[n,opts]

包括初始权重和其他参数的选项.

更多信息和选项

  • 可以包含下列可选参数:
  • "Biases"Automatic初始偏置向量(w.x+b 中的 b
    "Weights"Automatic初始权重矩阵(w.x+b 中的 b
    LearningRateMultipliers Automatic应用于权重与/或偏差的学习率乘子
  • 在没有明确指定权重和偏差或以 Automatic 形式给出的情况下,当使用 NetInitializeNetTrain 时,系统自动加上这些参数.
  • 设置 "Biases"->None 指定不应使用任何偏差.
  • 如果已经加上了权重和偏差,通过应用该层 LinearLayer[][input] 显式计算输出.
  • LinearLayer[][{input1,input2,}] 显式计算每个 inputi 的输出.
  • NumericArray 作为输入时,输出将是 NumericArray.
  • NetExtract 可以用来从 LinearLayer 对象提取权重和偏差.
  • LinearLayer 通常用在 NetChainNetGraph 等中.
  • LinearLayer 开放下列端口,以便用于 NetGraph 等:
  • "Input"数组
    "Output"大小为 n1×n2× 的数组
  • LinearLayer[{}] 指定 LinearLayer 应产生一个实数.
  • LinearLayer[n,"Input"->m]LinearLayer 的最常见的用法,表示一个 LinearLayer,接受长度为 m 的向量,产生长度为 n 的向量.
  • 在较大的网络中,如果不能从前面的层推导得出,可以使用选项 "Input"shape 来确定 LinearLayer 的输入. shape 的可能的形式包括:
  • "Real"一个实数
    m长度为 m 的向量
    {m1,m2,}维度为 m1×m2× 的数组
    NetEncoder[]编码
  • Options[LinearLayer] 给出构建网络层的默认选项的列表. Options[LinearLayer[]] 给出在一些数据上运行网络层的默认选项列表.
  • Information[LinearLayer[]] 给出关于该网络层的报告.
  • Information[LinearLayer[],prop] 给出 LinearLayer[] 的属性 prop 的值. 可能的属性NetGraph 相同.

范例

打开所有单元关闭所有单元

基本范例  (2)

创建一个 LinearLayer,其输出为长度为 5 的向量:

创建随机初始化的 LinearLayer:

对输入向量应用该层来产生输出向量:

范围  (11)

参数  (2)

创建一个生成 3×2 矩阵的 LinearLayer

指定任意深度的输出数组:

空列表对应标量输出:

端口  (6)

指定层的 "Input" 端口取长度为 3 的矢量:

明确指定 "Input""Output" 端口:

定义一个接收并返回实数的层:

将初始化层应用于输入:

可以初始化一个完全指定了 "Input""Output" 端口的 LinearLayer

将初始化层应用于输入:

定义一个能接收一个类并生成其单击编码向量的 NetEncoder

将编码器连接到层 "Input" 端口:

将层应用到类的成员上:

定义一个 NetEncoder,接收图像并生成 28×28 矩阵:

将编码器连接到层 "Input" 端口:

将层应用到类的成员上:

参数  (3)

"Biases"  (1)

定义并初始化一个无偏置的 LinearLayer

这与 Dot 等价:

"Weights"  (2)

指定权重矩阵,设置无偏置:

将层应用于输入:

提取权重:

使用特定的权重矩阵和偏置向量:

该层已完全指定,无需初始化:

选项  (2)

LearningRateMultipliers  (2)

创建一个带有冻结权重和偏差的 LinearLayer

训练含有该网络层的网络:

该网络层的权重和偏差未发生改变:

创建一个带有冻结权重的 LinearLayer,但不冻结偏差:

训练含有该网络层的网络:

权重没有发生改变,但偏差在训练期间发生了变化:

应用  (1)

NetChain 中通过叠用线性层创建一个两层的感知器:

在 "MNIST" 手写数字数据集上训练感知器:

对未曾见过的数字进行分类:

属性和关系  (2)

NetChain 中可用 n 指定 LinearLayer[n]

如果输入或输出是向量,LinearLayer 计算的是:

在数据上运行 LinearLayer

手动计算得到同样的结果:

可能存在的问题  (3)

如果 LinearLayer 的输入和输出维度处于未知状态,就不能被初始化:

LinearLayer 不接受符号式输入:

输出大小为 n、输入大小为 mLinearLayer 的权重矩阵的大小为 n×m

如果 nm 太大,可能没有足够大的系统或 GPU 内存来初始化或训练含有此 LinearLayer 的网络:

Wolfram Research (2016),LinearLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LinearLayer.html (更新于 2020 年).

文本

Wolfram Research (2016),LinearLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LinearLayer.html (更新于 2020 年).

CMS

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

APA

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

BibTeX

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

BibLaTeX

@online{reference.wolfram_2024_linearlayer, organization={Wolfram Research}, title={LinearLayer}, year={2020}, url={https://reference.wolfram.com/language/ref/LinearLayer.html}, note=[Accessed: 17-November-2024 ]}