PaddlePaddle最菜程序員的飛槳之旅—三歲python
你們好,這裏是你們熟悉的三歲,眨眼間又到了年尾,一年中衝KPI的時間到了,藉着這個機會再來 水一篇博客,談談本身和 paddle的相識相知與相互學習。linux
下載安裝命令 ## CPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
我的介紹
我是三歲,一個代碼界的小白,因爲各類緣由,代碼路不順,學習時間短,從去年開始自學python,看了嵩天老師的慕課視頻,可是一直是C語言的思考模式,有點沒法接受,一直耽擱着。一眨眼到了年初,對python的癡迷讓我繼續尋找着視頻,不停學習,敲代碼。接觸了博客,逐漸開始了,寫博客的旅程,本身會的,本身的理解都放到了博客上,就在這時看到了一則推文,今後踏上了一條「不歸之路」git
結緣之路
短短一段話,句句戳心房!
小白也能夠學深度學習,瞭解人工智能???
幾行代碼就能夠實現人工智能???
看看我如今的水平怎麼樣!走!!!程序員
一個錯誤的決定打開了我與paddle的認識之路
算法
逐步的對深度學習的認識,對AI Studio平臺的逐步瞭解編程
看着前期的課程與深度學習絕不相干,可是到最後才發現那些都是基礎,爲後期的課程作好了堅實的基礎。直到PaddleHub的出現改變了我對這些的見解。架構
# 安裝paddlehub !pip install paddlehub==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 安裝口罩檢測模型 !hub install pyramidbox_lite_mobile_mask==1.1.0 # 進行識別 !hub run pyramidbox_lite_mobile_mask --input_path "data/data31681/901.jpg"
import matplotlib.pyplot as plt import matplotlib.image as mpimg test_img_path = "data/data31681/test.jpeg" img = mpimg.imread(test_img_path) # 展現待預測圖片 plt.figure(figsize=(10,10)) plt.imshow(img) plt.axis('off') plt.show()
# 預測結果展現 test_img_path = "./detection_result/test.jpeg" img = mpimg.imread(test_img_path) # 展現預測結果圖片 plt.figure(figsize=(10,10)) plt.imshow(img) plt.axis('off') plt.show()
短短的幾行代碼(不不不就一行命令就把結果顯現了)仔細一看這個是linux代碼不是python的,通過文檔查看也就是幾行的事情。框架
import paddlehub as hub import cv2 module = hub.Module(name="pyramidbox_lite_mobile_mask") test_img_path = "data/data31681/test.jpeg" # set input dict input_dict = { "data": [cv2.imread(test_img_path)]} results = module.face_detection(data=input_dict) print(results)
[2020-04-25 09:37:05,353] [ INFO] - Installing pyramidbox_lite_mobile_mask module [2020-04-25 09:37:05,383] [ INFO] - Module pyramidbox_lite_mobile_mask already installed in /home/aistudio/.paddlehub/modules/pyramidbox_lite_mobile_mask [2020-04-25 09:37:05,506] [ INFO] - Installing pyramidbox_lite_mobile module-1.1.0 Downloading pyramidbox_lite_mobile [==================================================] 100.00% Uncompress /home/aistudio/.paddlehub/tmp/tmpt3rs1qq6/pyramidbox_lite_mobile [==================================================] 100.00% [2020-04-25 09:37:06,400] [ INFO] - Successfully installed pyramidbox_lite_mobile-1.1.0 [2020-04-25 09:37:06,568] [ INFO] - 133 pretrained paramaters loaded by PaddleHub [2020-04-25 09:37:06,615] [ INFO] - 0 pretrained paramaters loaded by PaddleHub [{ 'data': { 'label': 'MASK', 'left': 678.9846324920654, 'right': 893.2966804504395, 'top': 241.9092297554016, 'bottom': 487.231333732605, 'confidence': 0.9711812}, 'id': 1}]
看到’label’: ‘MASK’,恍然大悟這就是有戴口罩的啊!ide
短短的幾行,不經讓我一個見識短淺的小白一臉迷茫,人工智能真這麼簡單便捷???學習
直到本身實踐了項目——五人識別:
第一次接觸到了,訓練集、測試集、驗證集(6:2:2),第一次知道了acc和loss還有epoch等專業名詞及其的做用。
第一次知道CPU和GPU的不一樣區別
第一次……
萬萬沒想到第一次認識那麼簡單
第一次覺得人工智能如此簡單,第一次認爲本身又雙叒叕能夠了,直到接觸到了強化學習——世界冠軍帶你從零實踐,發現本身的身影的卑微。
進一步瞭解
從深度學習的基本理論,到所須要的數學基礎,從PARL強化學習到
迷宮遊戲,四軸飛行器的實際操做,在代碼和虛擬環境中學習提升
小小的遊戲,無不讓頭頂一涼,寒冬的冷風猶如凜冽的刀片從閃閃發光的頭頂飄過,不由瑟瑟發抖。
做爲代碼人,咱們有代碼魂,咱們要默默的敲代碼而後驚豔咱們本身。
Model
分別搭建Actor、Critic的Model結構,構建QuadrotorModel。
class ActorModel(parl.Model): def __init__(self, act_dim): hid_size = 100 self.fc1 = layers.fc(size=hid_size, act='relu') self.fc2 = layers.fc(size=act_dim, act='tanh') def policy(self, obs): hid = self.fc1(obs) logits = self.fc2(hid) return logits
class CriticModel(parl.Model): def __init__(self): hid_size = 100 self.fc1 = layers.fc(size=hid_size, act='relu') self.fc2 = layers.fc(size=1, act=None) def value(self, obs, act): concat = layers.concat([obs, act], axis=1) hid = self.fc1(concat) Q = self.fc2(hid) Q = layers.squeeze(Q, axes=[1]) return Q
# 建立飛行器環境 env = make_env("Quadrotor", task="hovering_control") env.reset() obs_dim = env.observation_space.shape[0] act_dim = env.action_space.shape[0] # 根據parl框架構建agent model = QuadrotorModel(act_dim) # Model(act_dim) algorithm = DDPG( model, gamma=GAMMA, tau=TAU, actor_lr=ACTOR_LR, critic_lr=CRITIC_LR) agent = QuadrotorAgent(algorithm, obs_dim, act_dim) # parl庫也爲DDPG算法內置了ReplayMemory,可直接從 parl.utils 引入使用 rpm = ReplayMemory(int(MEMORY_SIZE), obs_dim, act_dim)
# 7. 請選擇你訓練的最好的一次模型文件作評估 ckpt = 'model_dir/steps_700320.ckpt' # 請設置ckpt爲你訓練中效果最好的一次評估保存的模型文件名稱 agent.restore(ckpt) evaluate_reward = evaluate(env, agent) logger.info('Evaluate reward: {}'.format(evaluate_reward)) # 打印評估的reward
短短的代碼,磨光了頭皮,無不讓小白瑟瑟發抖,多少次似曾想要放棄,可是做爲代碼人哪有放棄的道理。日日夜夜,在哪一個即將截止的夜晚終於克服了報錯,得到了一個較好的結果,再次化身調參小白,隨機調參。
不斷的相互認知
在不斷的學習與提升中,相互學習,漸漸的接觸中知道了paddle的範圍,知道了paddleHub和paddle的區別,paddlex,EasyDL等等產品不斷迭代更新,PaddlePaddle2.0也即將問世,又是能夠重頭開始學習,不斷提升的一個好機會。
總結——肺腑之言
雖然我是一個不起眼的小白,在這些領域沒有太多的涉獵和造詣,可是我認爲咱們做爲新時代的青年,應該支持咱們的國產框架,咱們的成長不斷促使paddle的成長。咱們的需求也是paddle的發展方向,雖然目前咱們的框架沒有國外的一些框架那麼的完善,可是咱們的進步與發展以及和他們沒有太大的差別了,因此咱們要繼續努力,不斷前進,從我這個小白作起。
Paddle一個小白也能夠簡單學會的深度學習框架
加油吧!這裏是三歲,讓咱們乘風破浪繼續前進,2021Paddle會更好!!!
下載安裝命令 ## CPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
本文同步分享在 博客「三歲學編程」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。