請問python theano中的shared variable是指什麼意思?

時間 2022-01-17 23:47:19

1樓:石博天

難道重點不是shared可以儲存在視訊記憶體中嘛?不知道為啥大家都木有提到這一點。

因為這個特性,我們才會有「把神經網路引數放到shared中」的這種做法。

shared指向視訊記憶體中的一塊區域,這塊區域在運算中是共享的,所以常常在運算中用來儲存權值引數。

例如咱經常寫P(x;theta)=balabalabala

x是tensor,因為x是隨輸入變化的

而theta就是shared,因為theta不是輸入,而是被動改變的變數。

雖然x是tensor,但是每次eval時,如果真的輸入乙個numpy矩陣,那就太慢了,因為numpy矩陣是存在記憶體中的。所以常見的做法就是把dataset也用shared變數存起來。然後把切片作為x的資料feed進function。

這時候所有的操作只有指令的流動,而沒有記憶體視訊記憶體資料切換,速度槓槓的。

2樓:陳正瑆

shared variable是一種符號變數(symbolic variable),但是這個symbolic variable又擁有自己的值。

假設你定義了乙個shared variable叫做a:

import theano

a = theano.shared(2, "a")

那麼a就是乙個symbolic variable,目前的初始值是2

現在你定義兩個theano.function,乙個實現加二的功能,乙個實現平方的功能:

i = theano.tensor.scalar("i", dtype=theano.config.floatX)

add_two_func = theano.function(inputs=[i], outputs=[i+a])

sqr_func = theano.function(inputs=[i], outputs=[i**a])

i作為乙個輸入變數,通過theano.tensor.scalar來定義。i也是乙個symbolic variable,但是它在定義的時候沒有乙個固定的值。

現在開始實際呼叫加二的函式和平方的函式:

>>> add_two_func(3)

[array(5.0)]

>>> sqr_func(4)

[array(16.0)]

i在呼叫函式的時候,才被賦值。在上例中,i第一次被賦值了3,第二次被賦值了4。而a作為symbolic variable,卻在定義的時候就已經擁有了值:2 。

a之所以叫shared variable是因為a的賦值在不同的函式中都是一致的,即a是被shared的。在上例中a的值在不同的函式中都為2。

3樓:

共享變數,比如logistic二分類回歸模型,shared變數就是那個引數,看作兩層單節點單輸出神經網路。。推廣下,我說得抽象點,如果這個shared變數是個矩陣,樣本本身還可以由不同的變數表示某種狀態,那麼這個變換後的值是個新的向量,然後再由一次變換輸出為乙個值,就是三層神經網。如果這個變換後的向量再由乙個矩陣變換為新向量,……就是deep網。

那麼這個shared就是這樣的。

請問日語 韓語中base generated topic structure 的例子有哪些?

Plato 問了乙個系裡日文講師 Sato sensan,以下是她的回答 Fruutsu wa babana ga sukidosu 水果 TOP 香蕉 SUB 最愛 非心理動詞,而是形容詞 水果,最愛香蕉 如果 我 就是說話人,常常是省略的,但補出來也是可以的 fruutsu wa watashi...

2020 09 26 請問rust中的 和c 中的 有哪些區別?

被子飛了 這個問題實質上是要分清 Rust 和 C 各自的 指標 和 引用 型別。先來看 C C 的指標沿襲自 C 語言,就是乙個記憶體位址,其型別決定了編譯器如何操作該位址上的資料 C 的引用則是語義上的創新,建立引用相當於指定物件別名,在函式傳參的情況下仍然相當於傳指標,但由編譯器自動幫你執行各...

請問短語 English book 中的 English 是名詞,還是形容詞?

英語講師陳翠珊 The word English in the noun phrase English book is a modifier,functioningas an adjective in this noun phrase.There are many examples like thi...