【手动实现nn.Linear 】

线性变换参数可视化图
【手动实现nn.Linear 】_第1张图片

【手动实现nn.Linear 】_第2张图片


class LinearLayer(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(LinearLayer, self).__init__()
        self.weights = nn.Parameter(torch.Tensor(output_dim, input_dim))
        self.bias = nn.Parameter(torch.Tensor(output_dim))
        
        # 初始化权重和偏置项
        self.reset_parameters()

    def reset_parameters(self):
        nn.init.xavier_uniform_(self.weights)
        nn.init.constant_(self.bias, 0.1)

    def forward(self, input_tensor):
        output = torch.matmul(input_tensor, self.weights.t()) + self.bias
        return output

另外,最近的一些感想,觉得神经网络更多像是一种将数据抽象成某个维度,从而转换到另一个空间进行处理的过程,本质是对特征的处理,很多方法和模型结构也的设计也都是在更好地去映射和捕捉特征。

你可能感兴趣的:(人工智能)