1.nn.Linear
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
Applies a linear transformation to the incoming data:
y = x ∗ A T + b y = x* A^T+b y=x∗AT+b
in_features – size of each input sample
out_features – size of each output sample
bias – If set to False, the layer will not learn an additive bias. Default:True
in_features指的是输入张量的大小,即输入的[batch_size, size]
中的size
。
out_features指的是输出张量的大小,即输出的二维张量的形状为[batch_size,output_size]
,当然,它也代表了该全连接层的神经元个数。
从输入输出的张量的shape
角度来理解,相当于一个输入为[batch_size, in_features]
的张量变换成了[batch_size, out_features]
的输出张量。
输入
import torch
from torch import nn
m = nn.Linear(20, 30)
input = torch.randn(128, 20)
output = m(input)
print(output.size())
输出
torch.Size([128, 30])
2.nn.MarginRankingloss
RankingLoss
系列是来计算输入样本的距离,而不像MSELoss
这种直接进行回归。其主要思想就是分为Margin
和Ranking
。
Margin
这个词是页边空白的意思,平常我们打印的时候,文本内容外面的空白就叫Margin
。
而在Loss
中也是表达类似的意思,相当于是一个固定的范围,当样本距离(即Loss
)超过范围,即表示样本差异性足够了,不需要再计算Loss
。
Ranking
则是排序,当target=1
,则说明 x 1 x_1 x