跳到主要內容

發表文章

Python AI-安裝Anacoda Python

Python AI-安裝Anacoda Python 安裝Anaconda Python 環境安裝 (1) 下載Anaconda套件 官網: https://www.anaconda.com/ 套件下載: 下載網址 *MAC版本安裝 請下載3.7版的來進行安裝 安裝畫面: (2) 安裝深度學習套件 本次需要的範例 tensorflow numpy keras pandas 需要打開mac的終端機(terminal),需要將上面的套件安裝,首先測試conda指令是否可以執行 ##> conda 輸入安裝的指令,會請您輸入管理員的密碼,通過後可以進行安裝 ##>sudo conda install tensorflow ##>password ##>sudo conda install keras *測試 步驟一、首先在Document建立一個資料夾名為AI_Study,執行jupyter來進行測試 ##>cd ~/Document ##>mkdir AI_Study ##>cd AI_Study ##>jupyter notebook 步驟二、 出現jupyter的IDE後,我們新增一個腳本,並選擇Python 3來開發 測試方式為import karas套件後,執行Run看是否有發生錯誤,吾表示安裝成功 參考 http://moocs.nccu.edu.tw/media/23054

Python AI-簡介

Python AI-簡介 人工智慧技術簡介 人工智慧主要的核心概念為深度學習,然而要懂深度學習必須要會神經網路,神經網路由這三種核心技術所組成,後面的文章會陸續介紹類神經網路是如何學習? NN CNN RNN 人工智慧如何解決問題 人工智慧利用深度學習來學習而得到答案,利用數學的角度來解釋就是如果所有的問題都可以轉換成函式來表示,那深度學習就是找到那個函式來解決問題 AI可以解決的問題 目前深度學習可以大多應用這些問題. 預測,例如:下禮拜天氣預測、球員明年的打擊率 對話 圖片分類 自動駕駛 ####參考 backpropagation

Python AI-神經網路

Python AI-神經網路 神經網路 標準NN (1) 定義: Fully Connected Neural Networks(NN) 1980年開始流行 輸入層 隱藏層 輸出層 深度學習就是超過3層以上的隱藏層,每一層需要多少神經元 每個神經元的動作是相同的 多個輸入對應多個權重、 一個輸出 (2) 類神經網路圖示 我們可以將類神經網路是由很多神經元所組成,架構上可分為三層,第一層為輸入層(input layer)這一層是用來接收外面的資料,有可能是圖片、聲音、數字等等;第二層為隱藏層(hidden layer)用來訓練資料找到最佳函式表達(最佳解),此層可以多層的神經元組成;第三層輸出層(output layer) 將最佳解做輸出,此層只會有一個輸出. 神經元如何動作:每個神經元的動作是相同的,例如:H1接收到X1和X2的輸入值,反饋輸出不管輸入有幾條連結H1,他輸出值都會相同. (3)公式解說 每個輸入的神經元都會有權重值(w1、w2…),這些權重值用來決定輸入值的比重,如果輸入值會影響輸出比較重,我們可以給他比較重的權重值. 公式1 : 在所有輸入x權重的加總+b(調整值)可以得出一個輸出,如果這個輸出無法滿足答案,請看公式2 公式2 : 通常輸出加上激活函數是才是最後的輸出答案 (3)激活函數(Active Function) 類神經網路需要激活函數的目的在 公式1 可以看到乘績之和所得到的結果,只是得到線性關係解.通常問題的本質大多為非線性,利用激活函數將輸出得到一個非線性的表達式,藉此達到問題的近似解. *常見的激活函數 Sigmoid :模仿人類的類神經,輸入的刺激很小時,輸出就是0,反之輸出很大時,輸出也不會超過1 ReLU: 當輸入小於0,輸出就是0;輸入大於0,輸出等於輸入 參考:Mr. Opengate## 深度學習:使用激勵函數的目的、如何選擇激勵函數 Deep Learning : the role of the activation function (4)神經網路訓練 神經網路可以透過訓練資料的方式來找到問題的解,所以我們可以定義一組訓練資料集{(X1,Y1)、(X2,Y2)、(X3,Y3)…},透過神經網路輸出可以發現有誤差值產生...

Java Nio2-檔案管理

前言 Java 7增加對NIO改進,為NIO2,早期NIO對檔案只能做基本存取,但是NIO2不管對微軟還是Linux都可以除了做基本的存取外,還提供進階的功能,下面會一一介紹,例如:建立捷徑(symblic link)、 增加更多的檔案與目錄API屬性控制 異步非阻塞控制(Asynchronous IO) 其他(監看目錄、走訪目錄) 以區塊的方式來存取檔案 應用範例 新增檔案:Path與Files搭配使用可以設定權限. try { //新增檔案 Path path = Paths.get( "/Users/bryantlin/Downloads/test.txt" ); Files.createFile(path); //新增檔案並設定權限 Path path2 = Paths.get( "/Users/bryantlin/Downloads/test2.txt" ); Set<PosixFilePermission> perms = PosixFilePermissions.fromString( "rw-------" ); FileAttribute <Set<PosixFilePermission>> fa = PosixFilePermissions.asFileAttribute(perms); Files.createFile(path2,fa); } catch (IOException e) { e.printStackTrace(); } //Creating and Deleting Temporary Files Path path = Paths.get( "/Users/bryantlin/Downloads/" ); Files.createTempFile(path, "tmp" , null ); } catch (IOException e) { e.printStackTrace(); } 檔案操作 在nio2新增Path類別來表示檔案和路徑...

2018 Java 開發者年度大調查

前言 會想要寫這篇文章原因是希望提供Java同好參考和讓自己熟悉的工具是否與外國的開發者做一些比較和見解. Java Magazine年度大調查,針對全球10500的Java開發者所做調查,問卷面向包含JDK、開發工具、web 框架等,我把一些資料整理出來提供大家參考,詳細可以參考本期 java magazine 內容.會針對部分常見的技術和工具,以我自己的角度去詮釋,如果有問題歡迎留言討論,因為版權問題大部分只能用描述,無法全部都貼統計圖表. JDK調查 JDK是Java語言開發、編譯、執行程式的一個必要環境,換句話說想要執行Java必須要安裝JDK套件.調查內容如下: (1) 哪些供應商的JDK安裝在產品上面? link 由調查結果可以知道有百分之70的人會使用Oracle JDK,21%的人會使用社群版本openJDK,一些企業用戶使用IBM JDK版本約4%.因為版權問題這幾年很多人把Oracle JDK移植到openJDK為他們主要開發的版本. (2)哪些JVM語言為主要開發應用程式 link 大部分開發者還是會使用Java為主要的開發語言,其他語言Clojure(3%)、Kotlin(2.24%)、Groovy(2.36%)、Scala(1.83%)這些因為各自有專門領域所以還有部分使用者在使用.例Kotlin可以支援開發行動APP、Scala著名的Spark大數據處理工具. 工具 整個軟體分析、設計、實作、測試到上線都有對應的工具,本次調查著重實作和測試所使用的工具或是框架,這些工具開發者容易部署與進行模擬測試. (1) 開發者最長使用的IDE link 最多人使用前三名依序Intellj IDEA(45%)、Eclipse IDE(38%)、Apace Netbeans(11%),其中Intellj IDEA Ultimate Edition版本為需要付費有32%;Intellj IDEA Community Edition免費版本為11%;其他為Android開發者約2%.其他IDE開發工具沒有太大的變化. (2)那些建構工具是主要使用 link 開發團隊對專案主要使用的建構工具,是最多人在使用它,Maven仍有60%比例在使用,其次就是Gradle(19%)的人使用,我想應該是And...

TypeScript(6)模組化

前言 TypeScript的模組化大概可以分兩個部分(1)模塊(module)方式是ES6模組標準(2)命名空間(namespace)是TypeScript所制定的方法,這兩個概念會讓元件化更容易實作,在TypeScript一個*.ts檔案為一個模塊,接下來會介紹import和export這兩個語法,如何使用它們來完成模組化. Note: TypeScript 1.5以後內部模塊稱為命名空間,外部模塊稱為模組,這是為了跟ECMAScript 2015一致. 第一部分:模塊(module) 在模組( .ts檔)定義將變數、函式和類等,外部無法存取內部邏輯,只能透過export語法去導出所需要變數、函式和類給其他模組(( .ts檔)使用,當我們規劃元件時,該模組本身export的函式、變數和類就是模組的限制,這些在規劃元件藍圖時就應該考慮哪些資料需要提供給外部模組使用/不使用.在TypeScript可以支援不同的模組化系統如:AMD、SystemJS、ES Modules等等. Export 語法 (1) export 變數 // 檔名 moduleEx.ts export var 變數名稱 = 值; export const 變數名稱 = 值 範例: export var kk= 1234 ; export const PI= 3.1415 ; (2) export 介面 //檔名 moduleEx.ts export interface 介面 { //介面內容 } 範例: export interface IShap { width:number; heigh:number; } (3) export 類別 //檔名 moduleEx.ts //方法一 export class 類別名稱 { //類別內容 } //方法二 class 類別名稱 { //類別內容 } export {類別名稱} 範例: //方法一: 可以參考下面範例 //方法二 class Car{ constructor(color: string , engine: string ){ this .colo...

TypeScript(5) 類別

前言 JavaScript使用函式和prototype-based的方式去實現元件化,但是會造成以後維護災難的發生,日前ES6也開始加入類別的特性,但是TypeScript一開始就有以物件導向語言去做發展.我目前覺得TypeScript發展模組開發會好管理. 類別函式宣告 語法: class 類別名稱{ //屬性 private|public|protect 修飾子 屬性名稱; //建構子 constructor(){ //內容 } 函式名稱(參數名稱:參數類型):回傳類型{ //內容 } } 說明: private : 私人修飾子宣告讓外面無法直接存取該屬性 public : 公用修飾子讓外面可以直接存取該屬性 protect : 保護修飾子只能讓有繼承的類別可以存取該屬性 範例:類別宣告 class Person { private name:string ; constructor(name:string){ this.name = name } sayHi() { return `The person's name is ${this.name}`; } } let person = new Person('Jack'); console.log(person.sayHi()); 輸出結果: The person's name is Jack 繼承(Default Parameters) TypeScript有時我們需要可以利用繼承方法來建構元件,元件的可用性更好使用. 範例: //預設參數 class Robot extends Person{ public talk(){ console.log('I am a robot'); } } let robot = new Robot('robot 1 '); robot.talk() ; 輸出結果: I am a robot 抽...