Tech

  • • • •
  • 用 Python 玩硬體:MicroPython 簡介與實作

    說到嵌入式系統、物聯網等等硬體,很多靠 Python 吃飯的 PyBoys PyGirls 可能要舉雙手投降,因為控制這些底層大多需要靠 C 語言。但時代不同了,MicroPython 幾年前的推出讓用 Python 控制硬體不是夢。本文將會簡介 MicroPython 的應用,並以載有 ESP8266 Wi-Fi 模組的 NodeMCU 進行簡單資料傳輸實作。除了 MicroPython,硬體新手們不妨也藉此來認識一下物聯網的世界。

  • • • •
  • Reinforcement Learning 進階篇:Deep Q-Learning

    繼上一篇Reinforcement Learning 健身房:OpenAI Gym 介紹以 Q-table 為基礎的 Q-learning 之後,這一篇要來結合 PyTorch 實現以深度學習為基礎的 Deep Q-Learning。

  • • • •
  • Reinforcement Learning 健身房:OpenAI Gym

    不久前火熱的 AlphaGo 圍棋 AI 系統因打敗眾多人類好手而聲名大噪,而稍後推出的進化版 AlphaGo Zero 更是乾淨利落的藉由與自身對抗而習得棋藝,令人嘖嘖稱奇。而這系列圍棋 AI 系統背後即是以 Reinforcement Learning 強化學習為基礎訓練而成。

    Gym 是 OpenAI 所開源的 Reinforcement Learning 工具包。無論是想感受 Reinforcement Learning 是怎麼一回事,或是想嘗試進階 Deep Q-Learning 的開發者,都可以快速方便的調用 gym 所提供的許多現成環境,專注於演算法的設計與實現。快讓我們一起來成為健身房的永久免費會員!

  • • • •
  • 如Py似C:Python 與 C 的共生法則

    「C君,你做事那麼快,carry 一下我的作業啦!」「好啊Py桑,那你人緣那麼好,記得幫我介紹女朋友喔。」

    C 的高效能及接近底層硬體的特性,使其成為嵌入式系統開發的首選,卻極少有人會厭世到拿它開發網頁;Python 語法簡潔且能快速開發,無論網頁、遊戲、資料科學皆有其應用,但其速度卻會在很多資源有限的地方吃鱉。

    C 與 Python 如何互相截長補短、共生共榮,成為程式語言界的一大課題。此篇將會簡介一些 C 與 Python 的整合方法,見證C君與Py桑如何從死對頭變成相互扶持的好友。

  • • • •
  • 穿越時空的偉人:用PyTorch重現偉人們的神經網絡

    繼上一篇深度學習新手村:PyTorch 入門後,這一次要來做一點進階應用。筆者今年十一月參與在香港舉辦的 PyCon,其中 Aditthya Ramakrishnan 講者演講的主題 Resurrecting the dead with deep learning 以 RNN 模型訓練林肯 (Lincoln) 及希特勒 (Hitler)的混合語料庫,創造出講話非常矛盾的林克勒 (Lincler)。

    以此演講為基礎,這次收集並混合了《毛澤東語錄》和《論語》,嘗試模擬出一個「孔澤東」,藉此一窺 RNN 在中文文本生成 (Chinese text generation) 的應用。

  • • • •
  • 深度學習新手村:PyTorch入門

    深度學習新手在從學校、網路、或書中習得基礎神經網絡知識後,手癢想建立專案體現深度學習的威力之前,得先決定要玩哪一套深度學習框架。TensorFlow 無疑是近來相當火紅的一個,其由 Google 開源,近年來已建立龐大社群基礎。

    但 2017 年初由 Facebook 開源的另一套建立在 Torch 之上的深度學習框架 PyTorch 因其語法簡潔優雅、概念直觀和易上手的特性,甫推出便迅速走紅,儼然已成為瓜分深度學習市場的有力競爭者。藉由這樣的優勢,此篇將引領深度學習新手入門 PyTorch ,簡述其核心概念,並以深度學習領域的 Hello World! 專案 -- MNIST 手寫數字辨識為例,直接帶大家理解 PyTorch 如何打造模型及進行深度學習。

  • • • •
  • Python的import陷阱

    在脫離Python幼幼班準備建立稍大型的專案的時候,學習如何組織化你的Python專案是一大要點。Python提供的module(模組)package(套件)是建立架構的基本元件,但在module之間為了重複使用一些function(函數)或class(類別)而必須互相import(匯入),使用上一個不注意就會掉入混亂的import陷阱。

    此篇將會從基本module和package介紹起,提點基本import語法及absolute import和relative import的用法與差異,最後舉出幾個常見因為錯誤import觀念造成的錯誤。

  • • • •
  • Nginx Server SSL Setup on AWS EC2 Linux with Letsencrypt

    This post is a followup on my previous post on setting up an nginx server on AWS EC2 instance, and now we are going to support HTTPS to secure our website using a free SSL certificate authority (CA) letsencrypt.

  • • • •
  • Flask App with Gunicorn on Nginx Server upon AWS EC2 Linux

    The whole setup is modified from this tutorial, with the pain and gain from the alternative deployment on an AWS EC2 Linux server.

    1. Setup Environment
    2. Creating a Flask App
    3. Binding with Gunicorn
    4. Creating an Upstart Script for Running Gunicorn Server
    5. Running with Nginx on AWS EC2
  • • • •
  • Django SQLite DB Cleanup

    To beginners of Django, you may want to play with the sqlite db configuration commands before you actually implement something related to your project. The cleanup afterwards may be harmful due to the lack of clear instructions found online, and many cleanup should be done manually. Some useful commands and solutions to weird issues will be addressed.

  • • • •
  • ReactJS Data Visualization Libraries in a Hack Night

    • react

    At the hackathon last night, we were given a bunch of advertising data to work with so that data can be more understandable. I experimented with several React data visualization libraries, out of which I couldn't really find a perfect one. I will share the experience working with the libraries, and what pros and cons I found.

  • • • •
  • Shortest Path Algorithms

    Content

    1. Dijkstra's Algorithm
    2. Bellman-Ford Algorithm
    3. Floyd–Warshall Algorithm
    4. Shortest Paths in DAGs
  • • • •
  • Linked List Basic

    • C

    Content

    1. What is Linked List?
    2. Linked List v.s. Array
    3. Visualizing Linked List
    4. Basic examples (in C)