2024年9月7日 星期六

2023年12月2日 星期六

梯度下降與柯西不等式

 好奇點入@黃光文在台南夢n的演講

https://www.youtube.com/watch?v=ZL_tQKjzj04


光文老師提供了一些有別於一般柯西不等式的教學活動

突然有感而發:

諸葛亮也要學會和臭皮匠一起合作,才能獲得更高的效率


來看看下面的例子

在山頂往下走時,理想狀況假設

每往東1步高度下降 30cm(斜率=30)

每往南1步高度下降 40cm(斜率=40)


假設每回合移動可以選擇往東走dx步 

      再往南走dy步

因體力有限,限制(dx,dy)這個向量的長度為50
   (dx^2 + dy^2)^0.5 = 50 ,dx,dy >= 0

dx,dy為多少的時候可以得到本回合移動的最大的下降高度?


現實狀況中也當我們發現往南的效率比較好時,就會把資源全部壓在往南走

==> dx=0步  dy = 50步


但這樣選擇效率真的會比較好嗎?

至少數學上不是


不過這樣的場景發生在大大小小的生活場景中,

分組作業時,能力強的同學扛下大部分工作、

買食物的時候只買了自已最喜歡吃的品項、

讀書時只讀自己最喜歡的科目 ...


但其實分組時合作才創造更高的效率

買食物的時候要廣泛選擇才能營養均衡

讀書時要把時間分配給各科才能得到較高的分數(理論上啦)


這也可能是為什麼職業選擇多元的今日,

許多人會開始斜摃多項職業的原因,

回到上面下山的例子, 

根據柯西不等式

dx=30步 dy =40步 可以在一樣的限制底下得到最大的下降高度 

這其實就是在神經網路訓練階段中

用來調整模型參數的知名演算法「梯度下降法」為何可行的數學証明

這題的 dx 和 dy 的最佳比例剛好就可以視為

對x方向偏微之導函數值(x方向斜率)及

對y方向偏微之導函數值(y方向斜率)

之間的比例


以前學工程數學的時候就納悶這個方法的物理意義到底是什麼?

為什麼對各參數進行偏微之後的導函數值形成的向量是最大下降的方向?

直到最近幾年開始看神經網路相關內容的時候才發現,原來是用柯西不等式証明的

或許如果我高中就被@黃光文那麼可以啟發學生的數學老師教到的話

當下就能自己想通了也說不定 ~








2023年10月26日 星期四

10/27光德國中

 

與AI做朋友實作教案第七章 OUTLINE

 與AI做朋友實作教案第七章 OUTLINE

1.前言 2023十大生成AI趨勢

2.大型語言模型

  2.1 概述 Transformer

  2.2 如何運用大型語言模型(ChatGPT)

      2.2.1 Promt 使用三個要素:{角色}+{目標}+{產出}

      2.2.2 chatGPT指令大全及相關線上資源 https://www.explainthis.io/zh-hant

      2.2.3 示範如何用 chatGPT 寫程式及除錯

      2.2.4 其它平台介紹 (ex:google bard,poe ai,)

  2.3 如個調整的大型語言模型

      2.3.1 In-context Learning

      2.3.2  Fine-Tuning

3.文字生成圖片

  3.1 從 GAN 到 diffusion model

      (DeepFake、StyleGAN3、DALL.e、Midjourney、stable diffusion)

  3.2 diffusion model 文生圖實作案例(以 playgroundai.com 為例)

      3.2.1 套用圖片風格 (LoRA)

      3.2.2 控制生成(ex:控制姿態)(controlNet)

      3.2.3 局部重繪 (inpainting)


4.其它生成式應用現成案例

  4.1 生成影片 ex: GEN2 runway

  4.2 生成簡報 ex: Gamma

  4.3 生成音樂 ex: waveformer

  4.4 生成特定語者語音、音樂風格轉換 ex:AI孫燕姿

  4.5 生成圖表 ex:GraphGPT:  使用 GPT3 token 產生圖表

2022年8月27日 星期六

2022年8月20日 星期六

自建python paia 遊戲環境


 如何在自己python環境裡面玩 paia desktop 的遊戲呢?

除了要裝好指定的python版本和必需的package之外
還要裝好mlgame和遊戲程式,這邊把它整合進github中
並錄好說明影片了,有興趣朋友可以試試看。
內建AI演算法另外考量了磚塊的位置,找時間再錄影片另外說明。

2022年3月6日 星期日

在Windows 上安裝 python + Tensorflow + keras

※ 前言

    開始在 Windows 安裝一些人工智慧與機器學習的套件的時候才發現會踩到的坑坑洞洞
竟然不比Linux少啊… 不過對於一些對 Linux 有適應不良的使用者來說,
在Windows上作業還是比較簡單,底下和大家分享
『沒有GPU的一般使用者』如何在 Windows 下安裝 python + Tensorflow + keras
並在本機 cnn 跑一個簡單的手寫數字辨識

先到 tensorflow 的官網
https://www.tensorflow.org/install/source_windows


綜合網路的相關文章可以發現windows + python平台若想安裝tensorflow有三種方式:

   法1.在 Windows 上從原始碼開始建構 whl檔 (python + visual studio...)

   法2.找到已經編譯好的 whl 檔 ,直接安裝

   法3.Anaconda治百病


自行建構whl檔不容易,但Anaconda有時有太過於肥大,
在這裡和大家分享法2 

※ Step0. 系統及軟體版本需求:

  1.     Tensorflow 2.6.2 : 

 官網上說 tensorflow 2.6.2 支援 python3.6~3.9 
 而且在網路上找不到 x86的 whl 檔,因此
 windows 和 python必須是64位元的版本
     Tensorflow whl檔載點:
Note:
  位元版本錯誤時有可能會得到下列訊息
  DLL Load Failed: %1 is not a valid win32 application

 2.    Windows 64bit :

    在這裡我使用 Win10
     這裡要特別更新一下 Tensorflow 需要的 Microsoft c + + (MSVC)
     [後面會再提到…]
     
https://docs.microsoft.com/zh-tw/cpp/windows/latest-supported-vc-redist?view=msvc-170
     

 3.    python 64bit : 

   在這裡我使用 python3.6  , 因為我有時會用到 dlib ,
     但找不到dilb for python3.7以上的whl檔
      python for windows 載點:

   後記:
    2022/10/4
       找到 dlib for python3.7 的載點如下
       https://github.com/sachadee/Dlib
    
       比起dlib,發現 mediapipe 更好用,看了一下pipy上有支援到python3.7

   對有sence滴朋友來說,看到這裡應該就可以自己去Try了…

4.    keras:

     Tensorflow 2.x 以上會自帶 keras , 這裡我用的是 keras 2.6.0

5.    Python IDE 的選擇:

      a. Thonny :輕溥短小
      b. IDLE一樣而言安裝 python 時它會自帶 IDLE ,大家可能會忽略這一點
          IDLE 其實也蠻好用的
      c. Jupyter notebook:要搭配安裝 ipykernel  才能順利切換python的 kernel
      d. Anconda : 用Anaconda的話應該可以不用煩惱安裝元件的事…
      ....

     有鑑於大家使用的IDE不盡相同,本篇文章的處理原則如下:

         i.   直接由原始python的資料夾搭配『命令提示字元』(cmd.exe) 視窗操作

         ii.  安裝 python 及其它套件時全部使用預設資料夾
              (一般使用者,不用最高權限)

     PS: 安裝tensorflow,IDE要搭配哪一個版本的 python應該都是可以做選擇的
     不管使用哪一種 IDE ,一定要先知道:

          i.   python的版本
          ii.  python.exe 所在資料夾
          iii. 在IDE中如何切換各版本之python資料夾(或如何建python虛擬環境)

※Step1. 安裝 python 3.6   64bit


下載網址:

選擇 install now  , 特別要記得底下顯示的 python安裝路徑,我這裡是

C:\Users\infor\AppData\Local\Programs\Python\Python36

info 是我的windows使用者名稱,大家可置換成自己的windows使用者名稱,建議將windows使用者名報改成簡潔的英文,中間不要有空格,這樣在後續安裝和操作上都可以省去很多麻煩

安裝好 python 之後可先開好 pip.exe 資料夾
C:\Users\infor\AppData\Local\Programs\Python\Python36\Scripts



一些安裝包的whl檔就可以丟進來,方便之後使用 pip install 進行安裝

※ Step2. 安裝 Tensorflow 2.6.2

 1.下載 Tensorflow 2.6.2   並放入 pip.exe所在資料夾

 Tensorflow whl檔載點:
     
這裡選擇 2.6.2 (載點)來做示範,大家可以根據自己電腦的環境需求找適合的whl檔
在python安裝包中 cp36 一般代表 python3.6 ,win 代表windows系統,x86一般為32位元,而amd64則代表64位元,筆者大都會根據需求下關鍵字google是否有 whl 的載點…

下載好的 .whl 檔放置到本次安裝的python版本之 pip.exe 所在資料夾:
 C:\Users\infor\AppData\Local\Programs\Python\Python36\Scripts
(紅字部分自行填入windows使用者名稱)


2.開啟cmd.exe (於左下角 windows 搜尋列輸入 cmd 即可找到)


3.切換資料夾到 pip.exe 所在位置

輸入指令:

cd  C:\Users\infor\AppData\Local\Programs\Python\Python36\Scripts



4.輸入指令,設定 PATH 環境變數

set PATH=" C:\Users\infor\AppData\Local\Programs\Python\Python36"

   未設定PATH變數時,後續安裝會產生Warning

5.輸入安裝tensorflow指令:

pip install tensorflow-2.6.2-cp36-cp36m-win_amd64.whl

Note: 『tensorflow-2.6.2-cp36-cp36m-win_amd64.whl 』這個檔案已經在資料夾內部了,只要輸入『ten』後再按 tab 鍵就會自動完成
這裡因為是從全新的 python3.6 環境 安裝 tensorflow , 會花一些時間下載安裝相關的套件,安裝進行時如果有報錯就需要再針對錯誤訊息檢視是哪一個環節出問題,
成功安裝結束之後會看到 Successfully installed .... 等字眼


至此 tensorflow 已成功安裝,接下來跑一下CNN圖片識別的範例程式。

Note:
    1.若出現下列錯誤訊息

       failed to load the native tensorflow runtime.

         可能要更新一下MSVC後再重新安裝,連結如下:
     
     2. 可以透過底下指令更新 tensorflow版本
pip install --upgrade tensorflow

※ Step3. 執行CNN手寫圖片辨識範例(待補上)


※ 使用 python IDLE 撰寫程式
    windows左下視窗搜尋 IDLE (選擇python3.6 64bit IDLE)
     快速鍵 ctrl + N 可開啟新檔案      
Note: 若使用mnist資料集下載需要一些時間,這裡使用我寫的手寫數字的小資料集『Data_HandWrite』(含手寫資料產生程式)
   https://www.youtube.com/watch?v=zXANs6mJe5U

import Data_HandWrite
Data_HandWrite.downloadData()
X_train,Y_train = Data_HandWrite.LoadData('train')
X_test,Y_test = Data_HandWrite.LoadData('test')

import os
from keras.models import Sequential, load_model
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D
from keras.utils import np_utils #, plot_model
from keras.datasets import mnist
import matplotlib.pyplot as plt
import numpy as np

'''
①.將資料調整為二維圖片集合[圖片數,長,寬,RGB 3維]
方便輸入至 CNN (捲積神經網路)
②.Y 標籤轉換為 one-hot 方式
'''
x_train = X_train.reshape(-128283)
x_test = X_test.reshape(-128283)
y_train = np_utils.to_categorical(Y_train)
y_test = np_utils.to_categorical(Y_test)

import numpy as np
from matplotlib import pyplot
x = np.reshape(X_train,(-1,28,28,3))
for i in range(3):
  print(Y_train[i])
  pyplot.imshow(x[i]);pyplot.show()
  
'''
建構網路並規劃各層架構
捲積層1==>Max-pool(降低採樣)==>捲積層2==>Max-pool(降低採樣)==>Dropout==>
平坦層==>隱藏層==>輸出層
'''
model = Sequential() 
# Create CN layer 1  
model.add(Conv2D(filters=2,kernel_size=(3,3),padding='same',  
              input_shape=(28,28,3),  
              activation='relu'))  
# Create Max-Pool 1  
model.add(MaxPool2D(pool_size=(2,2)))  

# Create CN layer 2 
model.add(Conv2D(filters=4,kernel_size=(2,2),  
        padding='same',activation='relu'))  
# Create Max-Pool 2 
model.add(MaxPool2D(pool_size=(2,2)))  
# Add Dropout layer  
model.add(Dropout(0.25))  
# 建立平坦層 
model.add(Flatten()) 
# 建立隱藏層 
model.add(Dense(128, activation='relu'))  
model.add(Dropout(0.5))
# 建立輸出層 
model.add(Dense(6, activation='softmax'))  
print(model.summary())


# 訓練
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
'''
全資料集訓練 50 回合(epochs)
1回合共 640 張訓練圖片
1批次訓練64張圖片(batch_size)==>共訓練10批次
'''
model.fit(x_train, y_train, epochs=10, batch_size=64, verbose=1)

# 測試
loss, accuracy = model.evaluate(x_test, y_test)
print('Test:')
print('Loss: %s\nAccuracy: %s' % (loss, accuracy))


















2021年9月30日 星期四

人工智慧導論-課程規劃

人工智慧導論-課程規劃

google文件

●第1-2 節. 人工智慧概論 + python IDE: Thonny 介紹

   ex1.machine learning for kid

   ex2.線上 TTS / 語音辨識 / 翻譯

         https://tts.yating.tw/

   ex3.線上 自動塗色

       https://petalica-paint.pixiv.dev/index_zh.html

   ex4.自動猜測圖案

       https://www.autodraw.com/

   ex5.圖片去背 by AI 

       https://www.remove.bg/zh

   ex6.手寫轉換數學公式

      https://webdemo.myscript.com/views/math/index.html

   ex7.免費線上OCR服務

      https://www.onlineocr.net/zh_hant/

   
  Note:預告之後會分組報告

投影片:

https://docs.google.com/presentation/d/1a1hvDYYASaWA4yaoJWJCpOJFtJ3lyhxqm72jAYwVZNI/edit?usp=sharing


●第3-4節. 在 Python 上玩玩機器學相關應用安裝包

  ex1: 語音辨識

         speech_recognition

  ex2: 文字轉語音

         gtts

  ex2: google 翻譯

        googletrans

 作業: ex1 + ex2 + ex3 ⇒即時把輸入語音轉換成另一種語言輸出

 Note:預先分組

● 第5節 人工智慧專題實作 分組討論 :
  Brainstorming 

   https://www.bnext.com.tw/article/53929/brainstorming-training-leadership

  新興科技競賽說明

   http://fun.hcvs.kh.edu.tw/active.php?id=6

  1組約3人分12組

  

● 第4-5節 分組報告

    每組3-5分鐘

    想法新穎或有實現價值的組別可考慮參加比賽

    

● 第6-7節 手寫數字辨識訓練 + 測試

       a.利用 Data_HandWrite 熟係 收集資料 + 資料標記流程

       b.由 sklearn 中挑選一種模型來做訓練(ex:SVM)

       c.實際測試訓練好的模型於手寫字數字辨識上

       (訓練部分可放在colab中進行,亦可搭配keras來架構 CNN)

https://docs.google.com/presentation/d/1B5pWpujvnO1vb7vMkSAM6xjX1wELtaOdNslCM3rAD5E/edit?usp=sharing


● 第8-10節 KNN 人臉辨識-性別辨識

   搭配pyFaceTrace做Feature Extraction

   投影片:

https://docs.google.com/presentation/d/1OLHyCIglgr0-oWop0MP7BGOGvby_ruSMJjX-SOhx-pc/edit?usp=sharing

  說明網頁


※相關youtube影片

https://youtube.com/playlist?list=PLPE0QG97eXpgvn0dE7ndkn_6aVmCkeGY2

https://www.youtube.com/watch?v=zXANs6mJe5U



   

2021年9月24日 星期五

opencv影像處理與機房環控

 課程名稱:opencv影像處理與機房環控

※課程簡介:

opencv為一種常見的影像處理函式庫,利用opencv可取得webcam影像並寫出進一步的應用程式

詳細內容可參照課程表

※課程表及注意事項:

09:00~10:00

影像處理基本概念

點陣圖檔案格式

邊緣化及去雜訊實作

10:00~12:00

webcam畫面擷取與動差計算

ffmpeg 簡單應用

程式應用:動態記錄機房人員進入狀況

課程投影片連結:

https://docs.google.com/presentation/d/1gGKDlI9E5mWT71XCeVB4yf2MXRvB_Ut2xgULYrt184s/edit?usp=sharing

人工智慧專題-人臉辨識與門禁軟體介面

課程名稱:人工智慧專題-人臉辨識與門禁軟體介面
※課程簡介:
人臉辨識的技術在機器學習在卷積神經網路取得重要技術突破之後,廣泛地被應用,
只要使用現有 CNN 人臉模型就可以有令人滿意的辨識效果
詳細內容可參照課程表

※課程表及注意事項:
09:00~10:00
CNN 簡介
Teachable machine 模型訓練
colab 匯入Teachable Machine之模型
10:00~12:00
dlib 函式庫簡介
pyFaceTrace 人臉辨識函式簡介
visual studio 監控視窗介面開發

課程投影片連結:
https://docs.google.com/presentation/d/1oBQagR9lRWhhsHfobE9-aWFDPtHYUziiw6aiO_M7mmA/edit?usp=sharing 

2021年6月16日 星期三

AR運動小遊戲於 Scratch3 AI 平台上之運用

為了讓小孩可以運動放電,我最近搜尋了網路上相關資源

看到的多半是AR相關的 app,還有一些互動式的運動影片,我個人比前喜歡前者

1. iphone 多半用 Active Arcade

2. Android 就用 Plaicise




上面的App都有同樣的問題,不管是用手機或是平板,畫面都太小了,如果要投影到其它地方也是蠻麻煩的,於是我想說既然筆電通常有內建鏡頭,且螢幕又比較大,能不能在筆電開手機模擬器裡面玩這一些遊戲,試了幾款手機模擬器之後…感覺效果都不太好,那時就想到了其實早在 scratch2 的時代,我們就可以讓小朋寫視訊互動的遊戲了。

自己做做看吧… 也能拿來當教學內容

 scratch3 升級至網路版本之後視訊互動這個部分也有保留,我們可以偵測角色上視訊變化的大小,但在互動上這是不大方便的,還好 scratch 為開放平台,陸續有一些 Scractch3和 AI 機器學習結合的平台可以讓大家使用 (超棒的)

1. machine learning for kids 應該就是這個領域的先行者,網站上範例完整

     https://machinelearningforkids.co.uk/


2. 日本的 Junya Ishihara 也在這一塊做出很多出色的延伸應用

    https://stretch3.github.io/

    https://thewonder.it/bukatsu/programming/class/3967/

大家可以參考柯T的教學影片:




※我這裡也來分享我在 https://stretch3.github.io/ 平台上

自製讓小朋有玩的遊戲專案:

https://drive.google.com/drive/folders/1MrFpp7g62YN5PKhcz5LnuDUCjoQrUi68?usp=sharing

安裝方式:直接自  https://stretch3.github.io/ 檔 案>從你的電腦中挑選>
...選擇我們給的專案檔即可

一共五個關卡,要在蘋果掉落至底部前用『鼻子』控制武器切掉它,離鏡頭遠一些運動效果會更好



※詳細安裝步驟可參考下列投影片



之後有時間的話再來玩看看 scratch 開放原始碼改編好了,感覺挺有趣的

2021年3月1日 星期一

翻譯年糕 - 機器學習函式庫的綜合運用

 


小時候看到"小叮噹"拿出翻譯年糕的時候覺得很神奇
又是拜機器學習的進步之賜,現在手機就可以做出類似的功能了


常用這類 App 和不同語系的人們溝通的人應該會有一種體會:
想要了解一個國家的文化並做有深度的交流,還是要學習它的語言
不過透過機器確實可以讓我們在各方面得到很大的幫助,
我剛上幼兒園的女兒最近要做英文演說比賽,底下是幼兒園給的講稿

=================
Good morning,everyone.
 My name is Joan.
 My story is Hua Mulan, Hua Mulan.
Long time ago, there was a heroine, 
named Hua Mulan. 
She lived with her parents and a younger brother. 
Recently Huns had begun to invade the border.
Mulan's dad got notices of conscription for the army. 
But he is aged, the young brother was only a eight-year-old child. Mulan decided to take her dad's place in the army.
The next day, she went to the market to buy herself a horse and some gear.
 Mulan disguised herself into a handsome young man and was heading for army's camp. Mulan contributed a lot to the defeats over the enemy. Finally the Huns were totally defeated and the army returned home in triumph.
     The Emperor gave Mulan a rich reward of money and let her return immediately to her hometown.
 Back in her own room, Mulan took off her armor and put on a dress. All her fellow soldiers were stunned, "he" would turn out to be a beauty.
People admired Mulan for her self-giving love to her family and her nation.
 Thank you for your attention. Bye
=======================
在擔心我們自己教她唸會發音不標準的同時,我想到了
文字轉語音TTS 這個技術,
在 python 上導入 gTTS 這套函式就可以輕鬆寫程式把英文稿轉換成標準的英文語音了,在語言學習的道路上學會活用各種工具一定可以事半功倍的,所以別再說唸文組不需要學程式了,程式設計絕對是未來社會最重要的一種能力之一。

前置處理:安裝會用到的函式庫
pip install pyMicVoiceDetection 
pip install SpeechRecognition
pip install googletrans==3.1.0a0
pip install gtts pygame 

底下讓我們來看看 『翻譯年糕』 的程式如何撰寫吧…

#===========錄音===============
import pyMicVoiceDetection as vd
vd.recordAsyn('test.wav',dur=6,deviceIndex=1,TH=0.1)
#===語音辨識(語音轉文字)======
import speech_recognition as sr
r = sr.Recognizer()
with sr.WavFile('test.wav') as source:
    audio = r.record(source) 
Text = r.recognize_google(audio,language='zh-tw')
print(Text)
#==========翻譯===============
import googletrans
#print(googletrans.LANGUAGES)
translator = googletrans.Translator()
results = translator.translate(text = Text,src='zh-tw',dest='en')
print(results.text)
#=======文字轉語音============
from gtts import gTTS
tts = gTTS(text=results.text,lang = 'en' )
tts.save('temp.mp3')#,slow=True)
#==========播放mp3============
from pygame import mixer  # Load the popular external library
mixer.init()
mixer.music.load('temp.mp3')
mixer.music.play()

2020年6月1日 星期一

2020年5月26日 星期二

Dino practice 小恐龍外掛小程式

第一段:偵測並顯示滑鼠位置,定位偵測障礙物的座標

import pyautogui
pyautogui.click(30,10) #點擊座標 30,10
pyautogui.press('up')  #按下'上'鍵
    
for i in range(60):#迴圈:重複60次,i=0~59 
    p=pyautogui.position()  #取得座標放進變數p裡面
    print(p)            #印出p (目前滑座標)
    pyautogui.time.sleep(1) #等待1秒


#pix = pyautogui.pixel(100, 200)
#pyautogui.position()

第二段:加入像素值的判斷,遇到小恐龍的時候按上鍵

2020年5月21日 星期四

Windows MS word檔批次轉pdf工具

不知道大家有沒有想要一次轉換好幾個word檔成pdf檔的經驗呢?
雖然有很不少線上工具可以用
而且有些 word 本身也有支援轉檔的功能
可是一個一個檔案來操作實在是太累了
今天下午在處理這件事的時候,就順手把
python 原始碼打包成執行檔了

原始碼與執行檔案連結跟大家分享:
https://drive.google.com/drive/folders/1SRHodqTzwkxZu_SRtTeCCRdhCDbYrQQB?usp=sharing



#coding:utf8
import os, sys
from imp import reload
reload(sys)
from win32com.client import Dispatch, constants, gencache
def doc2pdf(sourceF,tartgetF):
    #sourceF = 'D:\\1.doc'
    #tartgetF = 'D:\\1.pdf'
    print(sourceF,' ==> ',tartgetF)
    # enable python COM support for Word 2007
    # this is generated by: makepy.py -i "Microsoft Word 12.0 Object Library"
    gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
    # 開始轉換
    w = Dispatch("Word.Application")
    try:
        doc = w.Documents.Open(sourceF, ReadOnly=1)
        doc.ExportAsFixedFormat(tartgetF, constants.wdExportFormatPDF, \
        Item=constants.wdExportDocumentWithMarkup,
        CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
    except: print('exception')
    finally: w.Quit(constants.wdDoNotSaveChanges)
    if os.path.isfile(tartgetF):print('translate success')
    else:print('translate fail')
    
desktop = os.path.join(os.path.join(os.path.expanduser('~')), 'Desktop') 
print('DOC/DOCX  to PDF  batch converter .  by K.Y. Lee (c) 2020 All Rights Reserved')
folder = input('„enter the target folder of MS doc/docx files on YOUR Desktop\n輸入欲轉換之word文件資料夾名稱(桌面上)[不需完整路徑]:')
DIR = desktop+'\\'+folder+"\\"

files = os.listdir(DIR)

for f in files:
    ii = f.find('.doc')
    if ii>0:
        doc2pdf(DIR+f,DIR+f[:ii]+'.pdf')

2020年4月28日 星期二

類神經網路 backpropagtion 演算法簡單講解

JavaScript 實現類神經網路(瀏覽器Deep Learning 好棒棒) - Soul ...


               我想不少人都曾經用過各種不同的函式庫在各種不同的平台上進行人臉辨識或
物件偵測,以前的時候這不是很簡單的技術,就算要直接引用別人
寫的函式庫也是要踩過很多坑才可以,現在這個時代 coding 變得越來越容易了,像是google出的這一款 object detection,簡單易學:

https://chtseng.wordpress.com/2019/02/16/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8google-object-detection-api%E8%A8%93%E7%B7%B4%E8%87%AA%E5%B7%B1%E7%9A%84%E6%A8%A1%E5%9E%8B/
連中學生最喜歡用的 appinventor 都可以做 object detection:
https://www.i-programmer.info/news/105-artificial-intelligence/13174-ai-with-app-inventor.html


如果說到人臉辨識順便也推一下小弟根據dlib包裝的這一套:pyFaceTrace
命令列輸入pip install pyFaceTrace 就可以安裝了喔
相關說明網站:https://reurl.cc/V65WRb

其實大部分的影像識別的演算法或是知名的模型(ex:resNet)都是從 cnn 演變出來的
https://medium.com/@CinnamonAITaiwan/cnn%E6%A8%A1%E5%9E%8B-resnet-mobilenet-densenet-shufflenet-efficientnet-5eba5c8df7e4
而 cnn 又是從 nn (類神經網路) 演化來的,大家在使用函式庫的同時不知道有沒有想過,我們在操作機器學習的黑盒子裡面的運作原理是什麼呢?
現在網路上大多流傳的是捲積(Convolution)及 detector/filter/kernel 概念的解釋,但訓練階段使用的 Gradient Dencent 和推導出來的,倒傳遞演算法(backpropagation)好像比較少人用簡單一點的方式來講解,其實有些網站也是解釋得蠻好的:
https://www.brilliantcode.net/1670/convolutional-neural-networks-4-backpropagation-in-kernels-of-cnns/
https://darren1231.pixnet.net/blog/post/338810666-%E9%A1%9E%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF%28backpropagation%29-%E7%AD%86%E8%A8%98
不過對於沒有數學底子的人,光是看算式,可能就快昏倒了
配合全臺首學的直播彩排,小弟預計於 5/6(三) 16:00於
南臺電子系物聯網實驗室進行直播
針對類神經網路 backpropagtion 演算法做簡單的講解
有興趣的人到時候可以連上來觀看
說明連結:
https://reurl.cc/qdrXnn