cntk深度網(wǎng)絡(luò)——從入門到轉(zhuǎn)行
cntk深度網(wǎng)絡(luò)——從入門到轉(zhuǎn)行一 開始 關(guān)于cntk的編譯和安裝,請(qǐng)參見相關(guān)文檔。此文檔用于cntk 2.0版的python。用于c++接口的有需求再整理資料。
如果你還沒安裝Cntk的運(yùn)行環(huán)境工具包,那么可以先擇使用預(yù)選安裝cntk運(yùn)行在Azure Notebook的托管環(huán)境。
如果你在你的機(jī)器上安裝了cntk,在完成安裝后你可以立即從Python 開始使用cntk(不要忘記激活你的python環(huán)境)。
??>>>?import?cntk ????>>>?cntk.__version__ ????'2.0rc2+' ????>>>?cntk.minus([1,?2,?3],?[4,?5,?6]).eval() ????array([-3.,?-3.,?-3.],?dtype=float32)
以上代碼使用了帶有兩個(gè)數(shù)組常量的cntk節(jié)點(diǎn)。每個(gè)操作符都有一個(gè)eval()方法,該方法可以調(diào)用,該方法使用它的輸入為該節(jié)點(diǎn)運(yùn)行向前傳遞,并返回向前傳遞的結(jié)果。使用輸入變量。更常見的例子是這樣的:
??>>>?import?numpy?as?np ????>>>?x?=?cntk.input_variable(2) ????>>>?y?=?cntk.input_variable(2) ????>>>?x0?=?np.asarray([[2.,?1.]],?dtype=np.float32) ????>>>?y0?=?np.asarray([[4.,?6.]],?dtype=np.float32) ????>>>?cntk.squared_error(x,?y).eval({x:x0,?y:y0}) ????array([?29.],?dtype=float32)
在上面的例子中,我們首先設(shè)置了兩個(gè)帶有形狀(1、2)的輸入變量,然后我們?cè)O(shè)置了一個(gè)帶有這兩個(gè)變量作為輸入的squarederror節(jié)點(diǎn)。在eval()方法中,我們可以為這兩個(gè)變量設(shè)置數(shù)據(jù)的輸入映射。在本例中,我們傳入兩個(gè)numpy數(shù)組。平方誤差當(dāng)然是(2-4)2+(1-6)2=29。
大多數(shù)的數(shù)據(jù)容器,比如參數(shù)、常量、值等等,都實(shí)現(xiàn)了asarray()方法,該方法返回一個(gè)NumPy接口。
>>>?import?cntk?as?C ????>>>?c?=?C.constant(3,?shape=(2,3)) ????>>>?c.asarray() ????array([[?3.,??3.,??3.], ???????????[?3.,??3.,??3.]],?dtype=float32) ????>>>?np.ones_like(c.asarray()) ????array([[?1.,??1.,??1.], ???????????[?1.,??1.,??1.]],?dtype=float32)
對(duì)于具有序列軸的值,asarray()不能工作,它要求形狀是矩形的,并且大多數(shù)時(shí)間的序列都有不同的長(zhǎng)度。在這種情況下,as序列(var)返回一個(gè)NumPy數(shù)組列表,其中每個(gè)NumPy數(shù)組都具有var的靜態(tài)軸的形狀。