Linear¶
- class paddle.nn. Linear ( in_features, out_features, weight_attr=None, bias_attr=None, name=None ) [源代码] ¶
线性变换层 。对于每个输入Tensor \(X\) ,计算公式为:
其中, \(W\) 和 \(b\) 分别为权重和偏置。
Linear层只接受一个Tensor作为输入,形状为 \([batch\_size, *, in\_features]\) ,其中 \(*\) 表示可以为任意个额外的维度。 该层可以计算输入Tensor与权重矩阵 \(W\) 的乘积,然后生成形状为 \([batch\_size, *, out\_features]\) 的输出Tensor。 如果 \(bias\_attr\) 不是False,则将创建一个偏置参数并将其添加到输出中。
参数¶
in_features (int) – 线性变换层输入单元的数目。
out_features (int) – 线性变换层输出单元的数目。
weight_attr (ParamAttr, 可选) – 指定权重参数的属性。默认值为None,表示使用默认的权重参数属性,将权重参数初始化为0。具体用法请参见 ParamAttr 。
bias_attr (ParamAttr|bool, 可选) – 指定偏置参数的属性。 \(bias\_attr\) 为bool类型且设置为False时,表示不会为该层添加偏置。 \(bias\_attr\) 如果设置为True或者None,则表示使用默认的偏置参数属性,将偏置参数初始化为0。具体用法请参见 ParamAttr 。默认值为None。
name (str,可选) – 具体用法请参见 Name ,一般无需设置,默认值为None。
形状¶
输入:形状为 \([batch\_size, *, in\_features]\) 的多维Tensor。
输出:形状为 \([batch\_size, *, out\_features]\) 的多维Tensor。
代码示例¶
import paddle
# Define the linear layer.
weight_attr = paddle.ParamAttr(
name="weight",
initializer=paddle.nn.initializer.Constant(value=0.5))
bias_attr = paddle.ParamAttr(
name="bias",
initializer=paddle.nn.initializer.Constant(value=1.0))
linear = paddle.nn.Linear(2, 4, weight_attr=weight_attr, bias_attr=bias_attr)
# linear.weight: [[0.5 0.5 0.5 0.5]
# [0.5 0.5 0.5 0.5]]
# linear.bias: [1. 1. 1. 1.]
x = paddle.randn((3, 2), dtype="float32")
# x: [[-0.32342386 -1.200079 ]
# [ 0.7979031 -0.90978354]
# [ 0.40597573 1.8095392 ]]
y = linear(x)
# y: [[0.23824859 0.23824859 0.23824859 0.23824859]
# [0.9440598 0.9440598 0.9440598 0.9440598 ]
# [2.1077576 2.1077576 2.1077576 2.1077576 ]]
使用本API的教程文档¶
- 单机多卡训练
- 训练与预测
- 模型组网
- 10分钟快速上手飞桨(PaddlePaddle)
- 基本用法
- InputSpec 功能介绍
- 框架概念
- 基本原理
- 案例解析
- 调试经验
- 升级指南
- hello paddle: 从普通程序走向机器学习程序
- 飞桨高层API使用指南
- 动态图
- 使用线性回归预测波士顿房价
- 用N-Gram模型在莎士比亚文集中训练word embedding
- 使用预训练的词向量完成文本分类任务
- IMDB 数据集使用BOW网络的文本分类
- 使用注意力机制的LSTM的机器翻译
- 使用LeNet在MNIST数据集实现图像分类
- 通过OCR实现验证码识别
- 使用卷积神经网络进行图像分类
- 基于图片相似度的图片搜索
- 人脸关键点检测