实现深度学习框架:第一章 AdaLine 模型

adaline 自适应线性神经元,是1960年提出来的。

f(x)=の(w*x+b)

用Pytorch实现一下试试。

class Adaline():
    def __init__(self, num_features):
        self.num_features = num_features
        self.weight = torch.zeros(self.num_features, 1, dtype=torch.float)
        self.bias = torch.zeros(1, dtype=torch.float)

    def forward(self, x):
        netinputs = torch.add(torch.mm(x, self.weight), self.bias)
        activations = netinputs
        return activations.view(-1)

    def backward(self, x, yhat, y):  
        
        grad_loss_yhat = 2*(y - yhat)
        grad_yhat_weights = -x
        grad_yhat_bias = -1.
     
    
        grad_loss_weights =  torch.mm(grad_yhat_weights.t(),
                                         grad_loss_yhat.view(-1, 1)) / y.size(0)

        grad_loss_bias = torch.sum(grad_yhat_bias*grad_loss_yhat) / y.size(0)
        
        # return negative gradient
        return (-1)*grad_loss_weights, (-1)*grad_loss_bias


主要实现了前向传播和反向传播。

前向计算中:

netinputs = torch.add(torch.mm(x, self.weight), self.bias)
对应着:  w*x +b  然后转换为1维返回。

反向传播中:
主要是计算loss


完整代码:https://github.com/xxg1413/MatrixSlow/tree/master/example/ch01

【FAI】00.FAI是什么

00.FAI是什么

FAI是意大利语中是“做”的意思,寓意“Just do it”。

FAI是一个开源的机器学习框架,可以供Rustacean构建深度或者混合的机器学习应用程序。

它的灵感来自于Tensorflow,Pytorch,Rust和许多优秀论文背后的人,在此感谢。

FAI 设计的主要目的是试图将技术负担降到最低,所以它拥有最简单的API,也是依赖最少的框架。

FAI是非常简洁的,在CPU,GPU和FPGA,拥有操作系统或者没有操作系统的机器上都可以运行它。

FAI是非常高效的,它的框架设计非常的注重高效并选择使用Rust来实现,它可能是目前已经开始开发的最快的深度学习框架之一。

FAI的设计使其能够发布独立的模块,使开发者可以轻松的进行机器学习实验,可视化和监控,网络分发,自动化预处理和可扩展的生产部署。

提示:FAI目前处于开发的早期阶段。后续会开源。