python 深度學習(感知器)總結

2021-08-26 09:45:10 字數 2614 閱讀 6109

今年想要將深度學習中的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為輸入。...