Numpy
?axis=0為列方向
?axis=1為行方向
在axis方向上求(壓縮哪一個(gè)axis)辅柴。瞭吃。。
subplot是水平計(jì)數(shù)(1股冗,2,3,4止状,5,6)
b[None,:,None,None]:b本來是一維的导俘,現(xiàn)在可編程4維。
x: Integer array of shape (N, T) giving indices of words旅薄,其中每一個(gè)元素均有 0 <= idx < V
W: Weight matrix of shape (V, D) giving word vectors for all words.
則W[x]:(N,T,D),x中每一個(gè)元素作為W的行索引,得到一個(gè)行向量少梁。
>>> a = np.array([1, 2, 3, 4])
>>> b = np.array([1, 2])
>>> np.add.at(a, [0, 1], b) ? #array([2, 4, 3, 4])
verbose=True才打印
各種相乘:https://blog.csdn.net/zenghaitao0128/article/details/78715140
不能是tuple
np.random.randn(10, 10) ?
必須是tuple
np.zeros((2,3))【為shape】
可以是tuple,也可以不是
np.reshape()
np.prod: 計(jì)算給定axis 的相應(yīng)向量元素的乘積
?imresize(puppy, (img_size, img_size)).transpose((2, 0, 1)) 對(duì)于一幅圖片第焰,CNN需要的是C*H*W,而imread是H*W*C,則需要對(duì)axis順序進(jìn)行轉(zhuǎn)換。
np.max:(a, axis=None, out=None, keepdims=False)求序列的最值,最少接收一個(gè)參數(shù),axis:默認(rèn)為列向(也即 axis=0)挺举,axis = 1 時(shí)為行方向的最值烘跺;keepdims若為true這保證了輸出結(jié)果與輸入具有相同的dim
np.maximum:(X, Y, out=None),X 與 Y 逐位比較取其大者;最少接收兩個(gè)參數(shù)
numpy.where(condition[,?x,?y])滤淳。一般使用時(shí),返回的時(shí)tuple
numpy.sum 參數(shù)keepdims用于:一般地铺敌,當(dāng)輸入時(shí)二維的時(shí)候,結(jié)果是二維的而不是一維的偿凭。
content_array[:,:,:,::-1],content_array有4維弯囊,前3維不動(dòng)硝皂,第四維元素順序顛倒
np.linalg.norm()各種距離
np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))array([1, 3, 1, 1, 0, 0, 0, 1], dtype=int32) # 分別統(tǒng)計(jì)0-7分別出現(xiàn)的次數(shù)
X_train_folds = np.array_split(X_train, num_folds)
np.array_split()&np.split():https://blog.csdn.net/m0_37393514/article/details/79537639
np.vstack與np.hstack
plt.scatter([k]*len(accuracies),accuracies)作谭,其中[k]重復(fù)len(accuracies)次
np.random.choice(num_training, num_dev,replace=False)
random.randrange(6) ?含義為0-5隨機(jī)選
enumerate()?
遍歷dict:for k, v in list(data.items()):
np.prod()所有元素乘積,同時(shí)可以設(shè)置axis計(jì)算某方向上的乘積
np.linspace(-0.1, 0.5,5) ?5代表有5個(gè)折欠,且結(jié)果包含左右邊界。結(jié)果為array([-0.1 , 0.05, 0.2 , 0.35, 0.5 ])
np.all() ?判斷所有的元素是否全為true
np.tolist() 與np.array()是互操作
np.array(A),對(duì)A進(jìn)行的復(fù)制操作咪奖,np.asarray()沒有復(fù)制操作。
1羊赵、range多用作循環(huán),range(0,10)返回一個(gè)range對(duì)象昧捷,如想返回一個(gè)list,前面加上list轉(zhuǎn)換靡挥;
2、np.arange是numpy模塊中的函數(shù)跋破,使用前需要先導(dǎo)入此模塊,arange(3):返回array類型對(duì)象毒返。
【注:range()中的步長不能為小數(shù),但是np.arange()中的步長可以為小數(shù)】
3饿悬、xrange()也是用作循環(huán),只是xrang(0,10)不返回list狡恬,返回xrange對(duì)象。每次調(diào)用返回其中的一個(gè)值弟劲。 但是好像xrange現(xiàn)在不能使用了。
返回很大的數(shù)的時(shí)候或者頻繁的需要break時(shí)候汇鞭,xrange性能更好。
np.random.randint(C,size=(N,))
scores[np.arange(num_train), y] 霍骄,np.arange(num_train)與y均是數(shù)組,則選擇出scores的第i行第j列的元素(i读整,j分別為兩數(shù)組里面的元素)
/代表浮點(diǎn)數(shù)相除,//代表整數(shù)相除米间。
為dict設(shè)置默認(rèn)值:
if configis None: config = {}
config.setdefault('learning_rate',1e-2)
[0.5] *3代表[0.5,0.5,0.5]
lambda函數(shù)
f =lambda w: svm_loss_naive(w, X_dev, y_dev,1e2)[0]
在python3中,5/2=0.25,5//2=2
a=np.array([[1,2],[3,4]])
a[0]為 array([1, 2])【第0行】屈糊,其實(shí)聯(lián)想一下Java的數(shù)組就明白了琼了。
方法1.用List的成員函數(shù)sort進(jìn)行排序,在本地進(jìn)行排序,不返回副本
方法2.用built-in函數(shù)sorted進(jìn)行排序(從2.4開始)谦去,返回副本,原始輸入不變
np.clip(255 * img,0.0,255.0).astype(np.uint8) ?可對(duì)變量的數(shù)值范圍進(jìn)行規(guī)范鳄哭。此處還轉(zhuǎn)化為可直接imshow的格式。
svm中展示權(quán)重圖片
w=best_svm.W[:-1,:]
w=w.reshape((32,32,3,10))
w_min,w_max=np.min(w),np.max(w)
classes = ['plane','car','bird','cat','deer','dog','frog','horse','ship','truck']
for i in range(10):
????plt.subplot(2,5,i+1)
????wimg=255.0*(w[:,:,:,i].squeeze()-w_min)/(w_max - w_min)
????plt.imshow(wimg.astype('uint8'))
????plt.axis('off')
????plt.title(classes[i])
dW = np.zeros_like(W)
np.zeros((3,2)),里面的()不能去掉
replace = True 在一次抽取中,抽取的樣本可重復(fù)出現(xiàn)药有。?
即:np.random.choice(6, 2, replace=True)?
可得,array( [4, 4] )?
replace = False 再一次抽取中愤惰,抽樣的樣本不可重復(fù)出現(xiàn)。?
即:np.random.choice(6, 2, replace=True)?
a.reshape(N,1):返回一個(gè)N*1維的ndarray扇单,并不會(huì)改變a的大小。
.resize(shape) :?與.reshape()功能一致蜘澜,但修改原數(shù)組
exp_sum = np.sum(A,axis=1).reshape(N,1)
A是一個(gè)矩陣,則np.sum(A,axis=1)的結(jié)果為一個(gè)數(shù)組(一行鄙信,此處仍然想想數(shù)組即可理解),但是我需要列向量装诡,此時(shí)就需要reshape(N,1)^_^
flags=['multi_index']表示對(duì)a進(jìn)行多重索引。op_flags=['readwrite']表示不僅可以對(duì)a進(jìn)行read(讀壬魍酢)蚓土,還可以write(寫入),
it = np.nditer(x,flags=['multi_index'],op_flags=['readwrite'])
while not it.finished:
? ? ? ?ix = it.multi_index
? ? ? ? it.iternext()
則每個(gè)ix是一個(gè)tuple ()蜀漆,如下圖:
在驗(yàn)證net梯度的正確性時(shí),eval_numerical_gradient對(duì)net.params[param_name]進(jìn)行修改時(shí)绷耍,是直接在net上的修改,所以lambda的參數(shù)沒有意義褂始,寫任何字母均可。
for param_namein grads:
????f =lambda WWWW: net.loss(X, y,reg=0.1)[0]
????param_grad_num = eval_numerical_gradient(f, net.params[param_name],verbose=False)
im.ndim:輸出維度
np.dot(rgb[...,:3], [0.299,0.587,0.144]) 將rgb轉(zhuǎn)化為灰度圖像崎苗,但是并不理解rgb[...,:3]的意思狐粱。
對(duì)于dict:
bn_param.get('eps',1e-5)胆数,若不存在eps,則默認(rèn)為1e-5
config.setdefault('learning_rate',1e-2) ?設(shè)置默認(rèn)值
np.logspace(-4,0,20) ?代表了1e-4到1e0的等比數(shù)列,(包含邊界)必尼,共20個(gè)數(shù)。
tf.nn.conv2(padding='VALID'):?長度為ceil((H-F+1)/S)?
tf.nn.conv2(padding='SAME'): 長度為ceil(H/S)?
因此padding需要加入的0的行數(shù)計(jì)算如下:
new_height = new_width = ceil(W / S) (結(jié)果向上取整)
在高度上需要pad的像素?cái)?shù)為
pad_needed_height = (new_height – 1) ?× S + F - W
根據(jù)上式豆挽,輸入矩陣上方添加的像素?cái)?shù)為
pad_top = pad_needed_height // 2 ?(結(jié)果取整)
下方添加的像素?cái)?shù)為
pad_down = pad_needed_height - pad_top
pycharm 軟件注意事項(xiàng)
1. 我將f1設(shè)置為運(yùn)行當(dāng)前行和運(yùn)行選中部分了,但是發(fā)現(xiàn)一個(gè)問題:該文件引用了另外一個(gè)文件B祷杈,在文件B中修改了程序,再運(yùn)行調(diào)用B程序但汞,發(fā)現(xiàn)竟然不能影響f1的運(yùn)行結(jié)果:發(fā)現(xiàn)可能因?yàn)閜ython console自動(dòng)對(duì)調(diào)用函數(shù)進(jìn)行了優(yōu)化:發(fā)現(xiàn)重復(fù)導(dǎo)入同一函數(shù),就不再重新導(dǎo)入私蕾,而是采用前一版本的函數(shù),因此踩叭,修改程序沒有改變其結(jié)果。解決方法是容贝,每一次點(diǎn)擊f1運(yùn)行前,都要點(diǎn)擊下述按鈕(重啟)斤富。如果點(diǎn)擊運(yùn)行或者調(diào)試,則沒有該問題满力。
RNN
(1). %字符:標(biāo)記轉(zhuǎn)換說明符的開始
(2). 轉(zhuǎn)換標(biāo)志:-表示左對(duì)齊潦嘶;+表示在轉(zhuǎn)換值之前要加上正負(fù)號(hào);“”(空白字符)表示正數(shù)之前保留空格掂僵;0表示轉(zhuǎn)換值若位數(shù)不夠則用0填充
(3). 最小字段寬度:轉(zhuǎn)換后的字符串至少應(yīng)該具有該值指定的寬度。如果是*看峻,則寬度會(huì)從值元組中讀出阶淘。
(4). 點(diǎn)(.)后跟精度值:如果轉(zhuǎn)換的是實(shí)數(shù)溪窒,精度值就表示出現(xiàn)在小數(shù)點(diǎn)后的位數(shù)。如果轉(zhuǎn)換的是字符串澈蚌,那么該數(shù)字就表示最大字段寬度。如果是*宛瞄,那么精度將從元組中讀出
(5).字符串格式化轉(zhuǎn)換類型
轉(zhuǎn)換類型 ? ? ? ? ?含義
d,i ? ? ? ? ? ? ? ? 帶符號(hào)的十進(jìn)制整數(shù)
o ? ? ? ? ? ? ? ? ? 不帶符號(hào)的八進(jìn)制
u ? ? ? ? ? ? ? ? ? 不帶符號(hào)的十進(jìn)制
x ? ? ? ? ? ? ? ? ? ?不帶符號(hào)的十六進(jìn)制(小寫)
X ? ? ? ? ? ? ? ? ? 不帶符號(hào)的十六進(jìn)制(大寫)
e ? ? ? ? ? ? ? ? ? 科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)(小寫)
E ? ? ? ? ? ? ? ? ? 科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)(大寫)
f,F ? ? ? ? ? ? ? ? 十進(jìn)制浮點(diǎn)數(shù)
g ? ? ? ? ? ? ? ? ? 如果指數(shù)大于-4或者小于精度值則和e相同,其他情況和f相同
G ? ? ? ? ? ? ? ? ?如果指數(shù)大于-4或者小于精度值則和E相同份汗,其他情況和F相同
C ? ? ? ? ? ? ? ? ?單字符(接受整數(shù)或者單字符字符串)
r ? ? ? ? ? ? ? ? ? ?字符串(使用repr轉(zhuǎn)換任意python對(duì)象)
s ? ? ? ? ? ? ? ? ? 字符串(使用str轉(zhuǎn)換任意python對(duì)象)
>>>?pi?=3.141592653??
>>>print('%10.3f'?%?pi)#字段寬10,精度3??
3.142??
>>>print("pi?=?%.*f"?%?(3,pi))#用*從后面的元組中讀取字段寬度或精度??
pi?=3.142??
>>>print('%010.3f'?%?pi)#用0填充空白??
000003.142??
>>>print('%-10.3f'?%?pi)#左對(duì)齊??
3.142???????
>>>print('%+f'?%?pi)#顯示正負(fù)號(hào)??
+3.141593??
優(yōu)雅寫
函數(shù)參數(shù)介紹:
'''
:param train_dir: 訓(xùn)練data所在文件夾
'''
TODO:
# TODO: 巴啦啦