本篇文章給大家?guī)砹岁P于python的相關知識,其中主要介紹了機器學習、深度學習庫總結,其中包含了大量的實例,下面一起來看一下,希望對大家有幫助。
推薦學習:python視頻教程
前言
目前,隨著人工智能的大熱,吸引了諸多行業(yè)對于人工智能的關注,同時也迎來了一波又一波的人工智能學習的熱潮,雖然人工智能背后的原理并不能通過短短一文給予詳細介紹,但是像所有學科一樣,我們并不需要從頭開始”造輪子“,可以通過使用豐富的人工智能框架來快速構建人工智能模型,從而入門人工智能的潮流。
人工智能指的是一系列使機器能夠像人類一樣處理信息的技術;機器學習是利用計算機編程從歷史數(shù)據(jù)中學習,對新數(shù)據(jù)進行預測的過程;神經網絡是基于生物大腦結構和特征的機器學習的計算機模型;深度學習是機器學習的一個子集,它處理大量的非結構化數(shù)據(jù),如人類的語音、文本和圖像。因此,這些概念在層次上是相互依存的,人工智能是最廣泛的術語,而深度學習是最具體的:
為了大家能夠對人工智能常用的 Python
庫有一個初步的了解,以選擇能夠滿足自己需求的庫進行學習,對目前較為常見的人工智能庫進行簡要全面的介紹。
python常用機器學習及深度學習庫介紹
1、 Numpy
NumPy(Numerical Python)
是 Python
的一個擴展程序庫,支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學函數(shù)庫,Numpy
底層使用C語言
編寫,數(shù)組中直接存儲對象,而不是存儲對象指針,所以其運算效率遠高于純Python代
碼。
我們可以在示例中對比下純Python
與使用Numpy庫
在計算列表sin值的速度對比:
import numpy as npimport mathimport randomimport time start = time.time()for i in range(10): list_1 = list(range(1,10000)) for j in range(len(list_1)): list_1[j] = math.sin(list_1[j])print("使用純Python用時{}s".format(time.time()-start))start = time.time()for i in range(10): list_1 = np.array(np.arange(1,10000)) list_1 = np.sin(list_1)print("使用Numpy用時{}s".format(time.time()-start))
從如下運行結果,可以看到使用 Numpy
庫的速度快于純 Python 編寫的代碼:
使用純Python用時0.017444372177124023s 使用Numpy用時0.001619577407836914s
2、 OpenCV
OpenCV
是一個的跨平臺計算機視覺庫,可以運行在 Linux、Windows 和 Mac OS 操作系統(tǒng)上。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構成,同時也提供了 Python
接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。
下面代碼嘗試使用一些簡單的濾鏡,包括圖片的平滑處理、高斯模糊等:
import numpy as npimport cv2 as cvfrom matplotlib import pyplot as plt img = cv.imread('h89817032p0.png')kernel = np.ones((5,5),np.float32)/25dst = cv.filter2D(img,-1,kernel)blur_1 = cv.GaussianBlur(img,(5,5),0)blur_2 = cv.bilateralFilter(img,9,75,75)plt.figure(figsize=(10,10))plt.subplot(221),plt.imshow(img[:,:,::-1]),plt.title('Original')plt.xticks([]), plt.yticks([])plt.subplot(222),plt.imshow(dst[:,:,::-1]),plt.title('Averaging')plt.xticks([]), plt.yticks([])plt.subplot(223),plt.imshow(blur_1[:,:,::-1]),plt.title('Gaussian')plt.xticks([]), plt.yticks([])plt.subplot(224),plt.imshow(blur_1[:,:,::-1]),plt.title('Bilateral')plt.xticks([]), plt.yticks([])plt.show()
可以參考OpenCV圖像處理基礎(變換和去噪),了解