今年想要將深度學習中的cnn加入機械人足球中來,於是在看零基礎入門深度學習課程,準備入門深度學習(大佬們請忽略),以下是連線
但是在親自程式設計時遇到一些問題,首先我的python版本是3.x,這對於源**中有些表達或者模組的引用需要更改。其次就是我的python掌握的並不是非常熟練,對於lambda表示式和一些bif等存在很多問題。下面是我遇到的一些問題總結
一、reduce()
在python2 中,reduce()函式為其bif,但是python 3.x中reduce()函式從全域性名字空間中移除,轉移到了functools模組中,所以在python3中要想使用reduce()函式需要引入functools模組然後去呼叫此函式,如下:
from functools import reduce
reduce()函式語法 :
reduce(function, iterable[, initializer])
reduce()函式的作用是運用函式對引數列表的元素進行累計,即用reduce()函式中的function對可迭代物件中的第乙個和第二個元素進行操作,得到結果後再和第三個進行function運算,一直到最後乙個元素。
def f(x,y):
return x*y
>>> reduce(f, range(1,4))
6
二、map()
map()函式是python內建的高階函式,map()函式的語法:
map(function, iterable, ...)
此函式接收乙個function和乙個list,通過函式function作用在list的每個元素上,最終得到乙個新的list並返回。
注意:1.map()函式不改變原有的list,而是生成乙個新的list,因此可以用map()函式將乙個list轉換成另乙個list
2.在python2和python3中,map()函式的返回型別不同,在python2中map()返回的是list型別,但是在python中map()函式返回迭代器iterators型別,想要列印出具體數值需要對map()函式進行list操作,即list(map(...)),否則結果如下:
下面是map()函式應用的乙個例子:
def f(x):
return x*x
>>>print(map(f, [1, 2, 3]))
[1,4,9]
三、zip()
zip()函式接受多個可迭代物件作為引數,將這些物件中對應元素打包成乙個tuple。
注意:在python2和python3中zip()函式的返回物件不同,python2中返回這些元組打包成的listl列表,但在python3為了節省記憶體,返回的是乙個物件,如果想要列印需要對zi()函式進行list操作。
以下分別是python2和python3中使用zip()函式的例子:
>>>a = [1,2,3]
>>>b = [4,5,6]
>>>zip(a,b) # 打包為元組的列表python2
[(1, 4), (2, 5), (3, 6)]
>>>list(zip(a,b)) #python3
[(1, 4), (2, 5), (3, 6)]
四、匿名函式lambda
lambda函式在python2、3中有很大區別。在python2中lambda函式可以接收多個引數,可以指定作為引數的元素的元組的個數,python2的直譯器會把這個元組「解開」成命名引數,然後在lambda函式中引用。python3中仍然可以傳遞乙個元組為lambda函式的引數,但是直譯器不會把它解析成命名引數,這時需要通過位置索引來引用每個引數python
python 2
python 3
注釋lambda (x,): x + f(x)
lambda x1 : x1[0] + f(x1[0])
注1lambda (x,y): x + f(y)
lambda x_y : x_y[0] + f(x_y[1])
注2lambda (x,(y,z)): x + y + z
lambda x_y_z: x_y_z[0] + x_y_z[1][0]+ x_y_z[1][1]
注3lambda x,y,z: x+y+z
和python2相同
注4注1:如果使用包含乙個元素的元組作為引數,在python3中會用位置索引x[0]來表示,其中x1是自己定義的,不違反命名原則下可以起其它的名字
注2:模擬注1,使用含有兩個元素的元組(x,y)作為引數的lambda函式被轉換為x_y,它有兩個位置引數,即x_y[0]和x_y[1]
注3:可以處理使用巢狀命名引數的元組作為引數的lambda函式,位置引數像二維陣列
注4:使用多個引數的lambda函式。python2和python3相同
最後除錯程式中遇到的手誤的小錯誤:
關於__name__ == 』__main__』
當模組作為主程式執行的時候,__name__屬性的值是「__main__」,當該模組被呼叫匯入到另乙個模組的時候,"__name__"屬性值為模組名稱。注意:是__main__而不是__main()__
單層感知器python 深度學習之單層感知器(一)
當我們最初學習機器學習時候,了解到最簡單的神經網路可能便是單層感知器,他也是監督學習的最簡單一種。本文章就通過 人工神經網路理論 設計及應用 書中介紹的單層感知器一節,進行python的 實現。單層感知器的網路結構如下 上圖便是乙個單層感知器,很簡單的乙個結構,圖中說明我們有個3維的輸入值分別是x1...
深度學習PART I 單層感知器
單層感知器的原始形式如下 如果把偏置項當作特殊權值,則單層感知器可以改為如下形式 感知器的學習規則 學習率 1 學習率太大,容易造成權值調整不穩定。2 學習率太小,權值調整太慢,迭代次數太多。收斂條件 1 誤差小於某個預先設定的較小的值。2 兩次迭代之間的權值變化已經很小。3 設定最大迭代次數,當迭...
入門深度學習(一)感知器
以下即為乙個感知器 乙個感知器有如下組成部分 任何線性分類或線性回歸問題都可以用感知器來解決。如二分類問題,可以用一條直線把分類0和分類1分開。將權重項和偏置項初始化為0,然後,利用下面的感知器規則迭代的修改wi和b,直到訓練完成。t為實際label,y為 label,yita為學習率,xi為輸入。...