CS231n_python_numpy

(1)

np.max:(a, axis=None, out=None, keepdims=False)

求序列的最值

最少接收一個參數

axis:默認為列向(也即 axis=0),axis = 1 時為行方向的最值;

np.maximum:(X, Y, out=None)

X 與 Y 逐位比較取其大者;

最少接收兩個參數

(2)

np.random.randint(4,size = 10) 隨機生成10個0~3之間的整數

(3)

np.nditer 遍歷多維數組 http://blog.csdn.net/lanchunhui/article/details/55657135

it = np.nditer(x,flags=['multi_index'],op_flags=['readwrite'])

while not it.finished:

? ? ? ? ? ix = it.multi_index

? ? ? ? ? ?...........

? ? ? ? ? it.iternext()

(4)

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

在指定的間隔內返回均勻間隔的數字。返回num均勻分布的樣本,在[start, stop]。

這個區間的端點可以任意的被排除在外(endpoint決定)。

(5)

當函數的參數不確定時,可以使用*args 和**kwargs,*args 沒有key值,**kwargs有key值

http://blog.csdn.net/chenjinyu_tang/article/details/8136841

(6)

pop(key[,default])

如果鍵值key存在與字典中,刪除dict[key],返回 dict[key]的value值。key值必須給出。

否則,返回default值。如果default值沒有過出,就會報出KeyError異常。

pop()方法至少接受一個參數,最多接受兩個參數。

self.update_rule = kwargs.pop('update_rule', 'sgd')

(7)

Python的hasattr() getattr() setattr() 函數使用方法

http://www.cnblogs.com/cenyu/p/5713686.html

(8)

iteritems方法

如果你想要訪問鍵和對應的值,那就使用iteritems方法

d={'person':2,'cat':4,'spider':8}

for animal,legs in d.iteritems():

? ? ? print 'A %s has %d legs' % (animal,legs)

# Prints "A person has 2 legs", "A spider has 8 legs", "A cat has 4 legs"

(9)

Python numpy函數hstack() vstack() stack() dstack() vsplit() concatenate()

http://blog.csdn.net/garfielder007/article/details/51378296

(10)

字典的get 與 setdefault

Python 字典 setdefault() 函數和get() 方法類似, 如果鍵不存在于字典中,將會添加鍵并將值設為默認值
dict.setdefault(key,default=None)

Python 字典(Dictionary) get() 函數返回指定鍵的值,如果值不在字典中返回默認值。

dict.get(key,default=None)

(11)

關于binary[range(binary.shape[0]), y] =1 和 binary[:, y] =1

第一種寫法才能得到正確的結果!!!

http://www.lxweimin.com/p/274740bb3c45

(12)

Python中有join()和os.path.join()兩個函數,具體作用如下:

join(): 連接字符串數組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個新的字符串

os.path.join(): 將多個路徑組合后返回

1、join()函數

語法: ‘sep’.join(seq)

參數說明

sep:分隔符。可以為空

seq:要連接的元素序列、字符串、元組、字典

上面的語法即:以sep作為分隔符,將seq所有的元素合并成一個新的字符串

返回值:返回一個以分隔符sep連接各個元素后生成的字符串

2、os.path.join()函數

語法: os.path.join(path1[,path2[,……]])

返回值:將多個路徑組合后返回

(13)

range 生成list ? ?

np.arange 生成 np.array

xrange用法與 range 完全相同,所不同的是生成的不是一個list對象,而是一個生成器。要生成很大的數字序列的時候,用xrange會比range性能優很多,因為不需要一上來就開辟一塊很大的內存空間

(14)

在python中作賦值時一定要特別小心,因為別名的變動導致原始數據的改變

別名會造成程序的可讀性降低,因為一個地方的變動可能會意外影響另一個地方。跟蹤所有引用同一個對象的變量是十分困難的。通常用復制對象的方法取代為對象起別名。

X_train = X_train.transpose(0, 3, 1, 2).copy()

X_val = X_val.transpose(0, 3, 1, 2).copy()

X_test = X_test.transpose(0, 3, 1, 2).copy()

(15)np.pad

pad(array,pad_width,mode,**kwars)

其中array為要填補的數組(input)

pad_width是在各維度的各個方向上想要填補的長度,如((2,3),(4,5)),如果直接輸入一個整數,則說明各個維度和各個方向所填補的長度都一樣。

mode為填補類型,即怎樣去填補,有“constant”,“edge”等模式,如果為constant模式,就得指定填補的值。

其中((2,3),(4,5))的意思是在axis = 0 的軸上,前面填充2個,后面填充3個;在axis = 1的軸上,前面填充4個,后面填充5個。

>>> a = [[1, 2], [3, 4]]

>>> np.lib.pad(a, ((3, 2), (2, 3)), 'minimum')

array([[1, 1, 1, 2, 1, 1, 1],

[1, 1, 1, 2, 1, 1, 1],

[1, 1, 1, 2, 1, 1, 1],

[1, 1, 1, 2, 1, 1, 1],

[3, 3, 3, 4, 3, 3, 3],

[1, 1, 1, 2, 1, 1, 1],

[1, 1, 1, 2, 1, 1, 1]])

(16)

在一個三層卷機網絡中,W2的尺寸為self.param['W2'] = weight_scale * np.random.randn(num_filters*H*W/4, hidden_dim)

特別注意:/4 ,經過pad填充后,圖像尺寸不變,經過pooling后,變為H/2,W/2。?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容