机器心脏排列
参与:思源和益铭
一行代码定义计算图,好容易,我妈再也不用担心我的机器学习了。
项目地址:https://github.com/JuliusKunze/jaxnet
JAXnet是一个基于JAX的深度学习库,它的API提供了便捷的建模体验。与主流框架如TensorFlow 2.0或PyTorch相比,JAXnet具有独特的优势。拿栗子来说,不管是Keras还是PyTorch。它们被模拟成积木。
然而,有一种比构建块更简单的方法,那就是JAXnet的模块化:
fromjaxnet import*净=顺序,密集,密集,对数最大值)
从预定义的模块创建神经网络模型。
要创建完全连接的网络,您可以直接使用预定义的模块。可以说JAXnet定义了计算图,只需要一行代码。写一个神经网络,原来这么简单。
一般来说,JAXnet侧重于模块化、可扩展性和易用性:
采用了不可变权重,而不是全局计算图,从而获得更强的稳健性; 用于构建神经网络、训练循环、预处理、后处理等过程的 NumPy 代码经过 GPU 编译; 任意模块或整个网络的正则化、重参数化都只需要一行代码; 取消了全局随机状态,采用了更便捷的 Key 控制。扩展性
您可以使用@ parameterized来定义自己的模块并重用其他模块:
fromjax importnumpy asnp@ parameter ized floss:return-NP . mean* targets)
所有模块都是这样组合的。杰克斯·努皮是努皮的镜像。只要知道如何使用numpy,就可以知道JAXnet的大部分用法。
以下是TensorFlow2/Keras的代码,比JAXnet简单:
importtensorflow astffromtensorflow.keras importSequentialfromtensorflow.keras.layers importDense, Lambdanet =顺序、密集、密集、λ]
defloss:return-tf.reduce_mean*目标)
需要注意的是,Lambda函数在JAXnet中不是必须的。relu和logsoftmax函数都是Python写的。
不可变重量
不像TensorFlow或者Keras,JAXnet没有全局计算图。模块,如。净价和损失不能节省可变权重。权重存储在不同的不可变类中。这些权重由init_parameters函数初始化,以提供随机键和样本输入:
fromjax.random importPRNGKeydefnext_batch:returnnp.zeros), np.zeros)params = loss . init _ parameters,* next _ batch)print#
目标函数不在线改变权重,而是不断更新下一个版本的权重。它们以新的优化状态返回,并由get_parameters检索。
opt = optimizers.Adamstate = opt.init_statefor _ in range:state = opt.optimize # accelerate with jit=Truetrained_params = opt.get_parameters当网络需要评估时:
test_loss= loss.apply # accelerate with jit=TrueJAXnet的正则化也很简单:
loss= L2egularized其他特征
除了简洁的代码,JAXnet还支持GPU上的计算。也可以用jit编译,摆脱Python运行缓慢的问题。同时,JAXnet是单步调试,就像Python代码一样。
安装也很简单,用pip安装即可。如果需要使用GPU,需要先安装jaxlib。
其他具体的空气污染指数可参考:https://github.com/JuliusKunze/jaxnet/blob/master/API.md
这篇文章是为机器的核心而写的。请联系本微信官方账号进行授权。
1.《jax JAXnet:一行代码定义计算图,兼容三大主流框架,可GPU加速》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《jax JAXnet:一行代码定义计算图,兼容三大主流框架,可GPU加速》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1691227.html