NNabla 索尼開源的一款神經網路框架

2021-08-19 12:58:30 字數 1868 閱讀 5671

原文:nnabla - neural network libraries

作者:sony公司

翻譯:雁驚寒

nnabla是一款用於研究、開發和生產的深度學習框架。 nnabla的目標是要能在台式電腦、hpc集群、嵌入式裝置和生產伺服器上都能執行。

安裝nnabla很簡單:

pip install nnabla
這條命令將安裝nnabla的cpu版本。你還可以通過執行pip install nnabla-ext-cuda來安裝cuda擴充套件以新增gpu加速。

基於nnabla c++ 11核心的python api為你提供了強大的靈活性和高效的生產力。例如,下面的5行**定義了乙個具有分類損失的雙層神經網路(超引數用<>括了起來)。

import nnabla as nn

import nnabla.functions as f

import nnabla.parametric_functions as pf

x = nn.variable()

t = nn.variable()

h = f.tanh(pf.affine(x, , name='affine1'))

y = pf.affine(h, , name='affine2')

loss = f.mean(f.softmax_cross_entropy(y, t))

可以通過以下方式來完成訓練:

import nnabla.solvers as s

# 建立乙個求解器(引數更新器)

solver = s.adam()

solver.set_parameters(nn.get_parameters())

# 訓練迭代

for n in range():

# 從任何乙個資料來源中設定資料

x.d = t.d = # 初始化變化率

solver.zero_grad()

# 前向後向執行

loss.forward()

loss.backward()

# 使用計算出來的變化率更新引數

solver.update()

動態計算圖能夠實現靈活的執行時網路構建。 nnabla可以同時使用靜態和動態圖正規化,並且兩者使用相同的api。

x.d = t.d = drop_depth = np.random.rand() < with nn.auto_forward():

h = f.relu(pf.convolution(x, , (3, 3), pad=(1, 1), name='conv0'))

for i in range():

if drop_depth[i]:

continue

# stochastically drop a layer

h2 = f.relu(pf.convolution(x, , (3, 3), pad=(1, 1),

name='conv%d' % (i + 1)))

h = f.add2(h, h2)

y = pf.affine(h, , name='classification')

loss = f.mean(f.softmax_cross_entropy(y, t))

# backward computation (can also be done in dynamically executed graph)

loss.backward()

推薦一款開源部落格框架WordPress

之前在我的論壇開源框架中介紹過phpwind和discus開源框架的本地配置和使用。最近我在用一款比較主流而且成熟的部落格框架來搭建自己的部落格,這就是wordpress 關於mysql的配置網上一大堆一大堆的,核心就是修改解壓縮包下的my檔案。開始搭建 1.解壓wamp 5.0到 例如c 自己選乙...

TrueCrypt 一款免費開源的加密軟體

truecrypt,是一款免費開源的 加密軟體 同時支援windows vista,7 xp,mac os x,linux 等作業系統。truecrypt不需要生成任何檔案即可在硬碟上建立 虛擬磁碟 使用者可以按照 碟符進行訪問,所有虛擬磁碟上的檔案都被自動加密,需要通過密碼來進行訪問。truecr...

springboot實戰 我們的第一款開源軟體

在資訊 時代,如何避免持續性資訊過剩,使自己變得專注而不是被紛繁的資訊所累?每天會看到各種各樣的新聞,各種新潮的技術層出不窮,如何篩選出自己所關心的?各位看官會想,我們是來看開源軟體的,你給我扯什麼資訊幹嘛,別著急,聽我慢慢道來。當瀏覽器收藏夾收藏的 或者文章在一百份以內的時候收藏和查詢問題都不是特...