基於PaddlePaddle框架的深度學習初接觸

2021-10-09 05:09:00 字數 3451 閱讀 8808

!pip install paddlepaddle -i
為了驗證是否安裝成功,輸入

import paddle.fluid

paddle.fluid.install_check.run_check()

出現your paddle fluid is installed successfully!說明安裝成功。

人工智慧:研發用於模擬、延伸和擴充套件人的智慧型的理論、方法、技術及應用系統的一門新的技術科學。由於這個定義只闡述了目標,而沒有限定方法,因此實現人工智慧存在的諸多方法和分支,導致其變成乙個「大雜燴」式的學科

機器學習:專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構,使之不斷改善自身的效能,比起人工智慧有更明確的指代。

深度學習:類似機器學習,但根本差別在於假設的複雜度。

因此,人工智慧 > 機器學習 > 深度學習

機器學習的實現可以分成兩步:訓練和**,類似於我們熟悉的歸納和演繹

模型有效的基本條件:能夠擬合已知的樣本

模型的優化目標:h(w,x)的輸出與真實輸出y盡量一致,兩者的相差程度即是模型效果的評價函式(相差越小越好)。

損失函式(損失loss):衡量模型**值和真實值差距的評價函式

機器學習的過程:假設、評價和優化三個階段

資料處理:從本地、url獲取資料,並完成預處理操作(如資料校驗、格式轉化等),保證模型可讀取資料。

模型設計:網路結構的設計,即模型的假設空間,模型能夠表達的關係集合。

訓練配置:設定模型的求解演算法,即優化器,並且指定計算資源。

訓練過程:迴圈呼叫訓練過程,每一輪都包括了前向計算、損失函式(優化目標)和後向傳播三個步驟。

模型儲存:將訓練好的模型進行儲存,在模型進行**時呼叫。

在現實中存在大量的函式正向求解容易,反向求解較難,被稱為單向函式。這種情況特別類似於一位想從山峰走到坡谷的盲人,他看不見坡谷在哪(無法逆向求解出loss導數為0時的引數值),但可以伸腳探索身邊的坡度(當前點的導數值,也稱為梯度)。那麼,求解loss函式最小值可以這樣實現:從當前的引數取值,一步步的按照下坡的方向下降,直到走到最低點。

由於原始機器學習模型種,每次損失函式和梯度計算都是基於資料集中的全量資料。但在實際問題中,資料集往往非常大,如果每次都使用全量資料進行計算,效率非常低,通俗地說就是「殺雞焉用牛刀」。由於引數每次只沿著梯度反方向更新一點點,因此方向並不需要那麼精確。乙個合理的解決方案是每次從總的資料集中隨機抽取出小部分資料來代表整體,基於這部分資料計算梯度和損失來更新引數,這種方法被稱作隨機梯度下降法(stochastic gradient descent,sgd),核心概念如下,

飛槳提供了多個封裝好的資料集api,涵蓋計算機視覺、自然語言處理、推薦系統等多個領域,幫助讀者快速完成深度學習任務。如在手寫數字識別任務中,通過paddle.dataset.mnist可以直接獲取處理好的mnist訓練集、測試集,飛槳api支援如下常見的學術資料集:

下面以cifar-10為例,

#載入飛槳和相關類庫

import paddle

import numpy as np

img_rows = 32

img_cols = 32

# 讀入資料時用到的批次大小

batchsize = 100

# 設定資料讀取器,讀取cifar資料訓練集

trainset = paddle.dataset.cifar.train10()

# 包裝資料讀取器,每次讀取的資料數量設定為batch_size=100

train_reader = paddle.batch(trainset, batch_size=100)

# 以迭代的形式讀取資料

for batch_id, data in enumerate(train_reader()):

# 獲得影象資料,並轉為float32型別的陣列

img_data = np.array([x[0] for x in data]).astype('float32')

# 獲得影象標籤資料,並轉為float32型別的陣列

label_data = np.array([x[1] for x in data]).astype('float32')

break

# 獲得資料集長度

imgs_length = len(img_data)

# 定義資料集每個資料的序號,根據序號讀取資料

index_list = list(range(imgs_length))

# 隨機打亂訓練資料的索引序號

random.shuffle(index_list)

# 定義資料生成器,返回批次資料

def data_generator():

imgs_list =

labels_list =

for i in index_list:

# 將資料處理成期望的格式,比如型別為float32,shape為[3, 32, 32]

img = np.reshape(img_data[i], [3, img_rows, img_cols]).astype('float32')

label = np.reshape(label_data[i], [1]).astype('float32')

if len(imgs_list) == batchsize:

# 獲得乙個batchsize的資料,並返回

yield np.array(imgs_list), np.array(labels_list)

# 清空資料讀取列表

imgs_list =

labels_list =

# 如果剩餘資料的數目小於batchsize,

# 則剩餘資料一起構成乙個大小為len(imgs_list)的mini-batch

if len(imgs_list) > 0:

yield np.array(imgs_list), np.array(labels_list)

return data_generator

# 宣告資料讀取函式,從訓練集中讀取資料

train_loader = data_generator

# 以迭代的形式讀取資料

for batch_id, data in enumerate(train_loader()):

image_data, label_data = data

if batch_id == 0:

# 列印資料shape和型別

print("列印第乙個batch資料的維度:")

print("影象維度: {}, 標籤維度: {}".format(image_data.shape, label_data.shape))

break

基於PaddlePaddle的新能源充電樁智慧型運維

以下為演講實錄 電力行業運維過程中的痛點與機遇 眾所周知,典型電力行業包括發電 輸電 配電 用電等多個階段,而電力作為關係國計民生的重要資源,在各個階段無論針對電網或是終端裝置的執行維護都是保障電網安全穩定執行的重要手段。此外,目前中國已經建成全球範圍內資訊化程度最高的電網,而電網的工程師們仍在持續...

PaddlePaddle常用映象

paddlepaddle映象 該映象整合了paddlepaddle深度學習平台,通過利用paddlepaddle提供的api可以進行神經網路配置 模型訓練等工作。獲取映象 docker pull paddlepaddle paddle 啟動容器 docker run it paddlepaddle ...

初次體驗paddlepaddle

初次體驗 paddlepaddle 這次的疫情讓很多大學生都只能呆在家裡上網課,而我就不一樣了,我需要待在家裡,但不需要上網課。因為這一學期我應該在一所高中實習當一名資訊科技老師,所有待在家裡實在無聊,所以只能用學習來打發時間,因為只有學習才能讓我變得快樂。本學期的計畫原本是安靜的當一名資訊科技老師...