【深度學(xué)習(xí)】Ivy 開源框架,深度學(xué)習(xí)大一統(tǒng)時(shí)代到來?
它來了,它帶著統(tǒng)一主流深度學(xué)習(xí)框架的接口來了。最近,有一個(gè)開源的框架:IVY,它將幾個(gè)主流的深度學(xué)習(xí)框架都做了一個(gè)統(tǒng)一的封裝,包括 PyTorch、TensorFlow、MXNet、Jax 和 Numpy。下面來大致看一下這個(gè)框架吧。


代碼地址:https://github.com/unifyai/ivy
先看看 IVY 官方是怎么定義的吧。
Ivy?is?a?unified?machine?learning?framework?which?maximizes?the?portability?of?machine?learning?codebases.?Ivy?wraps?the?functional?APIs?of?existing?frameworks.?Framework-agnostic?functions,?libraries?and?layers?can?then?be?written?using?Ivy,?with?simultaneous?support?for?all?frameworks.?Ivy?currently?supports?Jax,?TensorFlow,?PyTorch,?MXNet?and?Numpy.?

翻譯出來就是:
快速入門
pip install ivy-core來安裝,然后你可以使用你喜歡的框架來訓(xùn)練一個(gè)模型,下面是一個(gè)示例:import?ivy
class?MyModel(ivy.Module):
????def?__init__(self):
????????self.linear0?=?ivy.Linear(3,?64)
????????self.linear1?=?ivy.Linear(64,?1)
????????ivy.Module.__init__(self)
????def?_forward(self,?x):
????????x?=?ivy.relu(self.linear0(x))
????????return?ivy.sigmoid(self.linear1(x))
ivy.set_framework('torch')??#?change?to?any?framework!
model?=?MyModel()
optimizer?=?ivy.Adam(1e-4)
x_in?=?ivy.array([1.,?2.,?3.])
target?=?ivy.array([0.])
def?loss_fn(v):
????out?=?model(x_in,?v=v)
????return?ivy.reduce_mean((out?-?target)**2)[0]
for?step?in?range(100):
????loss,?grads?=?ivy.execute_with_gradients(loss_fn,?model.v)
????model.v?=?optimizer.step(model.v,?grads)
????print('step?{}?loss?{}'.format(step,?ivy.to_numpy(loss).item()))
print('Finished?training!')
框架無關(guān)的函數(shù)
import?jax.numpy?as?jnp
import?tensorflow?as?tf
import?numpy?as?np
import?mxnet?as?mx
import?torch
import?ivy
jax_concatted?=?ivy.concatenate((jnp.ones((1,)),?jnp.ones((1,))),?-1)
tf_concatted?=?ivy.concatenate((tf.ones((1,)),?tf.ones((1,))),?-1)
np_concatted?=?ivy.concatenate((np.ones((1,)),?np.ones((1,))),?-1)
mx_concatted?=?ivy.concatenate((mx.nd.ones((1,)),?mx.nd.ones((1,))),?-1)
torch_concatted?=?ivy.concatenate((torch.ones((1,)),?torch.ones((1,))),?-1)

統(tǒng)一所有框架的目的何在?
ivy.clip,它很好的封裝了其他框架的函數(shù)。


往期精彩回顧
評論
圖片
表情
