神经网络与NumPy。

nets的Python项目详细描述


pythonpypistatusdocswebsite

1。目录

2。概述

2.1条。关于

NETS是一个轻量级的深度学习Python包,仅使用numpy。 这个项目是在 University of Oslo,与第二个相似 来自Stanford University的赋值。在

然而,这个项目被进一步推进,以使其OOP具有更简单的API。 此外,使用自定义的autograd系统更改了反向传播和更新规则。 ^{str1}$NETS的灵感来自PyTorch和{a20} 包装。在

但为什么呢?

NETS包中有NO声明来隐藏已经很好构建的深度学习包,如PyTorchTensorFlow。相反,这个包是为了理解所有这些库是如何工作和处理的 从头开始向前/向后传播。 当我经历这个deep的理解时,我发现很有意思与大家分享 尽可能多的我的工作,我希望这将有助于学生或人们谁想了解更多关于这门学科。在

2.2条。要求

NETS中的所有包都是从头开始的,主要使用^{str1}$numpy。但是,一些额外的 安装包可以提供更好的体验(例如保存检查点和模型)。在

  • numpy
  • json(可选)
  • time(可选)
  • pandas(可选)
  • scipy(可选)
  • sklearn(可选)

2.3条。安装

PyPi安装此包

$pipinstallnets

或者从这个存储库

^{pr2}$

3。状态

DevelopmentStatusFeature
Autograd Systemfinished[x] Tensor[x] Parameter
Optimizationfinished[x] SGD[x] Adam[x] RMSprop
Lossin progress[x] MSE[x] Cross Entropy[ ] BCE
Solverfinished[x] Train[x] Eval[x] Checkpoints
Datafinished[x] Dataset[x] Batch[x] Iterator
Dense Neural Networkfinished[x] Linear[x] Sequential
Convolutional Neural Networkfinished[x] Conv2d[x] MaxPool2d[x] Dropout
Recurrent Neural Networkin progress[x] RNN[ ] LSTM[ ] GRU

4。文件

文档和教程正在进行中,很快就会发布。 你会发现一些教程和应用程序,如何开始或建立一个类似的包。在

5。开始吧

NETS架构遵循PyTorch中的架构。 它提供了一个基本的神经网络结构,所以你可以用numpy创建自己的神经网络。你需要 将数组包装在Tensor类中以跟踪渐变,就像^{str1}$PyTorch中一样。在

NETS

5.1条。计算图

NETS对渐变下降优化使用正向和反向传递(注意:现在有其他优化器!)。在

您也可以使用自动签名系统(推荐)。它的行为与Pytorch类似,只是完全是用NumPy完成的。在

importnetst1=nets.Tensor([1,2,3],require_grad=True)t2=nets.Tensor([4,5,6])t3=t1+t2# t3 now requires gradientt3=t3.sum()# Compute the gradients for t1t3.backward()

5.2条。建立模型

模型是Module子类,其中计算偏差、权重和参数转换。 所有模块都有一个forward方法,必须重写该方法。 该方法将计算输入张量的前向传播,并计算变换。 如果使用autograd系统,则不需要添加反向传播。然而, 如果您喜欢手动计算渐变,则需要重写backward方法。在

您的Model应该从Module类继承并重写 forward方法。在

importnetsimportnets.nnasnnclassModel(nn.Module):"""    Create your own model.    The attributes should be your submodels used during the forward pass.    You don't have to necessary affect the activation function as an attribute,    unless you want to set a manual backward pass.    """def__init__(self,input_dim,hidden_dim,output_dim):# Initializationsuper().__init__()# Don't forget to add this lineself.layer1=nn.Linear(input_dim,hidden_dim)self.layer2=nn.Linear(hidden_dim,hidden_dim)self.layer3=nn.Linear(hidden_dim,output_dim)defforward(self,inputs):# Forward passout1=nets.tanh(self.layer1(inputs))out2=nets.tanh(self.layer2(out1))returnself.layer3(out2)model=Model(10,100,2)# Let's check the architecturemodel

输出:

Model(   (layer1): Linear(input_dim=10, output_dim=100, bias=True)   (layer2): Linear(input_dim=100, output_dim=100, bias=True)   (layer3): Linear(input_dim=100, output_dim=2, bias=True))

同样,这与^{str1}$PyTorch提供的功能非常相似。在

6。笔记本电脑

7。参考文献

以下是帮助开发NETS的教程和讲座/作业列表

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何修改打印板?   java Spring批处理JdbcCursorItemReader还是RepositoryItemReader?   java如何在JTable Swing中增加标题列的字体?   java在数组方面遇到问题,导致表达式非法启动   java如何为maven pom的某些部分关闭Eclipse代码格式化程序。xml   java Dropwizard登录代码   java Jersey 2.22:客户端的默认连接超时是多少?   java无法自动连接字段:javax。sql。数据来源   如何从java中的行列表中获取单词列表?   java JDBC批量更新和处理异常?   计算大根:bigdecimal/java   java如何在JavaCC语法中提到trycatch块   javasocket。getInetAddress()不返回任何内容   oracle SQL开发人员错误无法找到Java虚拟机   java我如何计算和显示未来5年每一年的投资价值   java如何关闭浏览器选项卡?   java如何在showMessageDialog中打印双2D数组?   java从站点抓取播放列表URL?   selenium中的java点击css按钮