Open robin978 opened 2 years ago
目录分级、列出所有函数是基本的技术层次的东西(掌握 sphinx-build)。当然这个也需要了解,建议可以参照 torch 的文档源码,自己做试验,看如何达到这些效果:https://github.com/pytorch/pytorch/tree/master/docs/source
更重要的是,需要通过学习 PyTorch、OneFlow或者其它的资料,列出一个重构的”大纲“,规划以下的问题:
这不是一个随便调研就可以整理好的事情,也不是一个特别困难的事情,需要的就是专注去逐渐深入了解 PyTorch 的文档、OneFlow 的文档。
将每一个 class 按功能划分: oneflow.nn.Parameter
oneflow.nn.Module, oneflow.nn.ModuleDict , oneflow.nn.ModuleList , oneflow.nn.ParameterDict , oneflow.nn.ParameterList , oneflow.nn.Sequential
oneflow.nn.Conv1d , oneflow.nn.Conv2d , oneflow.nn.Conv3d , neflow.nn.ConvTranspose1d , oneflow.nn.ConvTranspose2d , oneflow.nn.ConvTranspose3d
oneflow.nn.MaxPool1d , oneflow.nn.MaxPool2d , oneflow.nn.MaxPool3d , oneflow.nn.AdaptiveAvgPool1d , oneflow.nn.AdaptiveAvgPool2d , oneflow.nn.AdaptiveAvgPool3d , oneflow.nn.AvgPool1d , oneflow.nn.AvgPool2d , oneflow.nn.AvgPool3d
oneflow.nn.ConstantPad1d , oneflow.nn.ConstantPad2d , oneflow.nn.ConstantPad3d , oneflow.nn.ZeroPad2d
oneflow.nn.ELU , oneflow.nn.Hardsigmoid , oneflow.nn.Hardswish , oneflow.nn.Hardtanh , oneflow.nn.LeakyReLU , oneflow.nn.LogSigmoid , oneflow.nn.PReLU , oneflow.nn.ReLU , oneflow.nn.SELU , oneflow.nn.CELU , oneflow.nn.GELU , oneflow.nn.SiLU , oneflow.nn.Sigmoid , oneflow.nn.Mish , oneflow.nn.Softplus , oneflow.nn.Softshrink , oneflow.nn.Softsign , oneflow.nn.Tanh , oneflow.nn.Threshold , oneflow.nn.GLU
oneflow.nn.Softmax , oneflow.nn.LogSoftmax
oneflow.nn.BatchNorm1d , oneflow.nn.BatchNorm2d , oneflow.nn.BatchNorm3d , oneflow.nn.FusedBatchNorm1d , oneflow.nn.FusedBatchNorm2d) , oneflow.nn.FusedBatchNorm3d , oneflow.nn.GroupNorm , oneflow.nn.InstanceNorm1d , oneflow.nn.InstanceNorm2d , oneflow.nn.InstanceNorm3d , oneflow.nn.LayerNorm
oneflow.nn.Identity , oneflow.nn.Linear
oneflow.nn.BCELoss , oneflow.nn.BCEWithLogitsLoss , oneflow.nn.CTCLoss , oneflow.nn.CombinedMarginLoss , oneflow.nn.CrossEntropyLoss , oneflow.nn.KLDivLoss , oneflow.nn.L1Loss , oneflow.nn.MSELoss , oneflow.nn.MarginRankingLoss , oneflow.nn.NLLLoss , oneflow.nn.SmoothL1Loss , oneflow.nn.TripletMarginLoss
oneflow.nn.PixelShuffle , oneflow.nn.Upsample , oneflow.nn.UpsamplingBilinear2d , oneflow.nn.UpsamplingNearest2d
oneflow.nn.parallel.DistributedDataParallel
oneflow.nn.utils.clip_gradnorm , oneflow.nn.utils.weight_norm , oneflow.nn.utils.remove_weight_norm
A package implementing various optimization algorithms. 可按照使用优化器的步骤对api进行分类。
you have to construct an optimizer object, that will hold the current state and will update the parameters based on the computed gradients.
oneflow.optim.Adagrad , oneflow.optim.Adam , oneflow.optim.AdamW , oneflow.optim.LAMB , oneflow.optim.RMSprop , oneflow.optim.SGD
oneflow.optim.lr_scheduler.CosineAnnealingLR , oneflow.optim.lr_scheduler.CosineDecayLR , oneflow.optim.lr_scheduler.ExponentialLR , oneflow.optim.lr_scheduler.LambdaLR , oneflow.optim.lr_scheduler.MultiStepLR , oneflow.optim.lr_scheduler.PolynomialLR , oneflow.optim.lr_scheduler.ReduceLROnPlateau , oneflow.optim.lr_scheduler.StepLR
oneflow.nn.functional.conv1d , oneflow.nn.functional.conv2d , oneflow.nn.functional.conv3d ,
oneflow.nn.functional.adaptive_avg_pool1d , oneflow.nn.functional.adaptive_avg_pool2d , oneflow.nn.functional.adaptive_avg_pool3d ,
oneflow.nn.functional.threshold , oneflow.nn.functional.relu , oneflow.nn.functional.hardtanh , oneflow.nn.functional.elu , oneflow.nn.functional.selu , oneflow.nn.functional.celu , oneflow.nn.functional.leaky_relu , oneflow.nn.functional.prelu , oneflow.nn.functional.glu , oneflow.nn.functional.gelu , oneflow.nn.functional.logsigmoid , oneflow.nn.functional.hardshrink , oneflow.nn.functional.softsign , oneflow.nn.functional.softplus , oneflow.nn.functional.softmax , oneflow.nn.functional.log_softmax , oneflow.nn.functional.softshrink , oneflow.nn.functional.tanh , oneflow.nn.functional.sigmoid , oneflow.nn.functional.hardsigmoid , oneflow.nn.functional.silu , oneflow.nn.functional.mish , oneflow.nn.functional.layer_norm , oneflow.nn.functional.normalize
oneflow.nn.functional.linear ,
oneflow.nn.functional.embedding , oneflow.nn.functional.one_hot
oneflow.nn.functional.sparse_softmax_cross_entropy , oneflow.nn.functional.cross_entropy , oneflow.nn.functional.triplet_margin_loss
oneflow.nn.functional.pad , oneflow.nn.functional.interpolate , oneflow.nn.functional.upsample , oneflow.nn.functional.affine_grid , oneflow.nn.functional.grid_sample
a multi-dimensional matrix containing elements of a single data type. 参考 pytorch 文档可以先介绍数据的类型,以及如何定义 tensor。
在此部分可以详细介绍如何定义 tensor 张量。 在 oneflow 模块中有对 bool、float 等类型张量的定义,是否可以考虑罗列在此处。
将相关的函数罗列在此部分。 oneflow.Tensor
contains data structures for multi-dimensional tensors and defines mathematical operations over these tensors. Additionally, it provides many utilities for efficient serializing of Tensors and arbitrary types, and other useful utilities.
oneflow.is_tensor , oneflow.is_floating_point , oneflow.is_nonzero , oneflow.numel , oneflow.set_printoptions ,
oneflow.as_tensor , oneflow.as_strided , oneflow.from_numpy , oneflow.zeros , oneflow.zeros_like , oneflow.ones , oneflow.ones_like , oneflow.arange , oneflow.linspace , oneflow.eye , oneflow.empty , oneflow.full
oneflow.argwhere , oneflow.cat , oneflow.concat , oneflow.chunk , oneflow.gather , oneflow.hsplit , oneflow.index_select , oneflow.masked_select , oneflow.movedim , oneflow.narrow , oneflow.nonzero , oneflow.permute , oneflow.reshape , oneflow.select , oneflow.scatter , oneflow.scatter_add , oneflow.scatter_nd , oneflow.split , oneflow.squeeze , oneflow.stack , oneflow.swapaxes , oneflow.swapdims , oneflow.t , oneflow.tensor_split , oneflow.tile , oneflow.transpose , oneflow.unbind , oneflow.unsqueeze , oneflow.vsplit , oneflow.where
oneflow.seed , oneflow.initial_seed , oneflow.manual_seed , oneflow.get_rng_state , oneflow.bernoulli , oneflow.rand , oneflow.randint , oneflow.randn , oneflow.randperm
oneflow.no_grad , oneflow.grad_enable , oneflow.is_grad_enabled , oneflow.inference_mode
oneflow.abs , oneflow.acos , oneflow.acosh , oneflow.arccos , oneflow.add , oneflow.asin , oneflow.asinh , oneflow.arcsin , oneflow.arcsinh , oneflow.atan ,oneflow.atanh , oneflow.arctan , oneflow.arctanh , oneflow.atan2 , oneflow.ceil , oneflow.clamp , oneflow.clip , oneflow.cos , oneflow.cosh , oneflow.div , oneflow.erf , oneflow.erfc , oneflow.erfin , oneflow.exp , oneflow.expm1 , oneflow.floor , oneflow.floor_ , oneflow.fmod , oneflow.log , oneflow.log1p , oneflow.log2 , oneflow.logical_and , oneflow.logical_not , oneflow.logical_or , oneflow.logical_slice , oneflow.logical_xor , oneflow.mul , oneflow.neg , oneflow.negative , oneflow.pow , oneflow.reciprocal , oneflow.round , oneflow.rsqrt , oneflow.sigmoid , oneflow.sign , oneflow.sin , oneflow.sinh , oneflow.sin_ , oneflow.sqrt , oneflow.square , oneflow.sub , oneflow.tan , oneflow.tanh
oneflow.argmax , oneflow.argmin , oneflow.min , oneflow.mean , [oneflow.prod] (https://oneflow.readthedocs.io/en/master/oneflow.html#oneflow.prod) , oneflow.std , oneflow.sum , oneflow.var
oneflow.argsort , oneflow.eq , oneflow.equal , oneflow.gt , #oneflow.isinf , oneflow.isnan , oneflow.le , oneflow.lt , oneflow.ne , oneflow.sort , oneflow.topk
oneflow.broadcast_like , oneflow.cumprod , oneflow.cumsum , oneflow.diag , oneflow.diagonal , oneflow.einsum , oneflow.flatten , oneflow.flip , oneflow.meshgrid , oneflow.roll , oneflow.tril
oneflow.addmm , oneflow.bmm , oneflow.dot , oneflow.matmul ,
为了重构 v0.8.0 的API 文档,想对 oneflow 中的数据类型进行整合,参考 pytorch 数据类型表格 ,请开发组同事帮忙,将整理好的数据类型回复在这个 issue 里。
Data type | dtype | CPU tensor | GPU tensor |
---|---|---|---|
Boolean | oneflow.bool | oneflow.BoolTensor | oneflow.cuda.BoolTensor |
8-bit integer (unsigned) | oneflow.uint8 | oneflow.ByteTensor | oneflow.cuda.ByteTensor |
8-bit integer (signed) | oneflow.int8 | oneflow.CharTensor | oneflow.cuda.CharTensor |
64-bit floating point | oneflow.float64 / oneflow.double | oneflow.DoubleTensor | oneflow.cuda.DoubleTensor |
32-bit floating point | oneflow.float32 / oneflow.float | oneflow.FloatTensor | oneflow.cuda.FloatTensor |
16-bit floating point | oneflow.float16/oneflow.half | oneflow.HalfTensor | oneflow.cuda.HalfTensor |
32-bit integer (signed) | oneflow.int32/oneflow.int | oneflow.IntTensor | oneflow.cuda.IntTensor |
64-bit integer (signed) | oneflow.int64/oneflow.long | oneflow.LongTensor | oneflow.cuda.LongTensor |