發表文章

目前顯示的是 2017的文章

類神經網路雜談

圖片
其實不管是類神經網路,學習語言或是學習任何領域的知識,都不斷的強調:
先去用了,就知道要學什麼

特別是類神經網路這哦領域的知識,看了數種tensorflow 教學,有些人用數學的方式來介紹神經網路,嚇壞了一堆人,包括我,以為要學習神經網路要有非常深厚的數學能力,事實上當我們開始撰寫Tensorflow的程式碼的時候,一行數學式子都沒有用上,連我自己都嚇傻眼,但我不是反對你去了解這些數學式子,而是要告訴你其實學習類神經網路這件事情,比完全了解神經網路運作原理來的簡單太多了。

就像學開車一樣,其實大多數的人(包含我),都一直以為開車加速的[油門]是真的把油打開,但開車開了這麼多年上山下海,直到最近才知道原來所謂的油門,其實應該稱作[氣門],我們實際上並不是控制油,而是控制進氣閥,控制進去引擎的空氣量大小,錯了這麼多年了對於我們開車這件事情好像沒有太多影響。

如果不去深入了解類神經網路的數學式與原理,那我們該了解什麼,這也是這篇文章最重要的重點,學習類神經網路我們應該去瞭解他的觀念還有他的特性,並學會怎麼去假設我們的問題與目標,並使用神經網路幫我們解決這個議題。

那我們該怎麼學習神經網路,Google一開始用了幾個範例來交導我們入門,用了手寫辨識這個簡單的範例,但是這個範例有一個很大的問題,就是不見頭不見尾,我娓娓道來。

分類(classification)的問題,為什麼很多機器學習的一開始就會介紹分類,而學習神經網路也對於分類這麼重視,事實上他就是我們大腦無時無刻都在做的事情,只是我們不稱他叫做分類,我們稱它叫做[決定]、[判斷]。
       舉一個簡單的例子,例如我今天中午想要吃什麼午餐,我會想想 我肚子有沒有很餓,現在天氣式冷還是熱,所以我再[決定]要吃什麼午餐的時候我就是在以 肚子餓的程度與天氣的溫度做為判斷依據,於是我開始收集數據

肚子很餓,天氣很冷   想吃火鍋
肚子不餓,天氣很冷   想吃牛肉麵
肚子很餓,天氣很熱   想吃便當
肚子不餓,天氣很熱   想吃涼麵


如果我把這件件事情量化(量化就是把事情用數字表示),肚子餓用0-100分評比
(肚子 50分以下代表很餓 50分以上代表不餓)
(溫度 26度 以上大表很熱 26度以下代表很冷)


肚子 30,溫度 15  答案  火鍋
肚子 60,溫度 15  答案  牛肉麵
肚子 30,溫度 30  答案  便當
肚子 70,溫度 31 …

xamarin 編譯的時候遇到 找不到檔案 'obj\iPhone\Release\XXXXXX.exe.manifest'。XXXXXX

圖片
關閉 ClickOnce 這個選項
\專案(右鍵)\屬性     安全性\啟用 ClickOnce 安全性設定 關閉

ibeacon ios教學

ibeacon 是一個藍芽的發射器, ios或是android 可以透過搜尋ibeacon的訊號強度來判別手機是否進入ibeacon的範圍內,以達到

1. 手機是否進入某個範圍 (將ibeacon 放置特定區域)
2. 點名附近所有ibeacon ( 將超小型的ibeacon放置於需要點名的物品上 例如鑰匙 小孩 錢包
)

ibeacon 使用藍芽的ble技術,所以非常省電通常一顆鈕扣電池可以使用3個月不關機,如果使用大一點的電池可以撐上一兩年不需要更換電池.


一開發ibeacon之前 我們需要一台ibeacon發射器, 不花錢方案或是網路買一個

1.用iphone 或是ipad模擬

     例如這個
https://itunes.apple.com/us/app/beacon-simulator/id1098267039?mt=8

2.用android 模擬

例如這個
https://play.google.com/store/apps/details?id=net.alea.beaconsimulator&hl=zh_TW

3.用樹莓派模擬

     如這個網站介紹
http://cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pi-40ibeacon.html
   指令如下
sudo hciconfig hci0 up sudo hciconfig hci0 noscan sudo hciconfig hci0 leadv
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 C8 00 關閉如下
sudo hciconfig hci0 down 二 ios 開發
在ios11開發 ibeacon 需要在info.plist中註冊三件事情
NSLocationAlwaysAndWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription

ios11 改變了需要註冊這三個才能開發,

CODE

以製作剪刀石頭布的遊戲來學習神經網路Tensorflow 與 Keras--計畫開頭

學習了一些網路上的神經網路資源,但是多半停留在MNIST的數字手寫範例,

希望以實作的方式製作一款剪刀石頭步的遊戲來介紹LSTM與CNN達到有趣的入門神經網路
目標希望能學習到tensorflow 與 keras 所以會以tensorflow 先期製作,再以keras再度製作,


計畫步驟
一、使用鍵盤輸入完成LSTM預測的遊戲
       1. 先撰寫Tensorflow  LSTM 預測 剪刀石頭步的程式,驗證想法是否可行
       2. 使用Keras LSTM 再度製作
       3. 撰寫介紹文
       4. 錄製短片

二、撰寫CNN 辨識剪刀石頭步的範例
      0.先撰寫Python取得攝影機資料
      1.先撰寫Tensorflow CNN 辨識剪刀石頭步
      2.使用]Keras CNN再度製作
      3.撰寫介紹文
      4.錄製短片

三、結合一 、二製作剪刀石頭步的完整遊戲。


A star path project PRO RVO

使用 A star path project PRO 的 RVO
1.專案裡要有 AStar Path 來尋找路徑引擎
2.加入RVOSimulator

移動的物件加入
1.Seeker
2.RVOController
3.RVOExampleAgent
4.FunnelModifier <--如果沒有加這個 他不會看到主角就主動轉過去 而是笨笨的走道巡路點
5.simple smooth <--如果沒有加這個 物體就會快速地抖動



RVOController  
 Mask 是地板的偵測
"Layer mask for the ground. The RVOController will raycast down to check for the ground to figure out where to place the agent"


Layer <--我自己是哪一層 這是RVO的物件並不是LAYER的物件
Layer mask specifying which layers this agent will avoid.

collidesWith  是指我碰撞那一些RVO ,這些主要是用在 敵人與自軍 分層使用





Unity 5.6 ios 編譯的三個錯誤

編譯unity 5.6.x 於ios上 編譯過程會產生三個錯誤,目前知道這個Bug由 IL2CPP 所造成
,選擇Mono2x就不會有事,但Mono2X不能編譯64位元,只能Arm7所以iphone 5s 以上都不能執行

試試看把整個專案搬移至mac 桌面,然後編編譯看看,有機會可以編譯過去

目前只能期待官方 快點修正這個Bug


Failed running /Applications/Unity/Unity.app/Contents/Tools/UnusedByteCodeStripper2/UnusedBytecodeStripper2.exe --api NET_2_0_Subset -out "/Volumes/SSD_D/Arkit/ArkitFPS2/Temp/StagingArea/Data/Managed/tempStrip" -l none -c link -b true -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Core.xml" -f "/Applications/Unity/Unity.app/Contents/il2cpp/LinkerDescriptors" -x "/Volumes/SSD_D/Arkit/ArkitFPS2/Temp/StagingArea/Data/Managed/../platform_native_link.xml" -x "/Volumes/SSD_D/Arkit/ArkitFPS2/Temp/StagingArea/Data/methods_pointedto_by_uievents.xml" -x "/Volumes/SSD_D/Arkit/ArkitFPS2/Temp/StagingArea/Data/preserved_derived_types.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/AI.xml" -x "/Applications/Unity/PlaybackEngines/i…

mac windows 多系統安裝 且還有D槽

因為雷了很多次,浪費了很多時間
所以再一次的記錄下來,
如果你想要讓你的MAC 擁有mac os與 windows 並存,且還有一個D槽讓兩邊的系統都可以讀取的exFat 那你必須要這麼做: 請不要使用bootcamp 切割硬碟 那只會讓事情更糟糕

1.開機的時候使用command + R 連結網路 進入網路開機
2.使用磁碟分割工具,分割三個磁碟
   第一個 FAT  等一下安裝windows 使用
   第二個 Exfat 當成兩系統資料交換
   第三個 MAC卷宗  等一下安裝MAC使用

關鍵就是MAC要放在最後一個磁區

接著安裝MAC
裝完MAC將 windows 安裝即可

ios編譯CreatePrimitive 遇到大問題 -->Cancel Strip Engine Code on ios build

Unity對於arm64目前只能使用 IL2CPP , 不能使用Mono2X 原因網友說因為Mono的Arm64 Lib不opne source,所以針對iphone 6 iphone 7 基本上不能使用mono2x,

這裡有一個編譯的陷阱,強迫使用IL2CPP時有一個選項 Strip Engine Code 一定要取消打勾,否則有一些程式碼會讓你的程式碼無法運作,例如CreatePrimitive 這個指令就無法運行,但是在windows 或是mac 沒有問題.

所以重點是
Cancel Strip Engine Code on ios build
Cancel Strip Engine Code on ios build
Cancel Strip Engine Code on ios build

Cancel Strip Engine Code on ios build

Unity透過 Camera.projectionMatrix 回算出aspect 與 fov

https://developer.vuforia.com/forum/unity-extension-technical-discussion/vertical-fov-unity

這裡有寫道
Matrix4x4 mat = Camera.main.projectionMatrix; floata = mat[0]; floatb = mat[5]; floatc = mat[10];

樹莓派安裝模擬器Retro Pie

這裡有一個好文
https://home.gamer.com.tw/creationDetail.php?sn=3476425

不盜文 所以用連結 希望他不會消失

Unity gameObject.isStatic Android IOS 上

這個一定要註明一下 因為害我查了兩天的問題


物件的gameObject.isStatic  靜態,可以優化Draw Call 但是

你絕對不可能在執行階段去改變一個物件的isStatic

但是在編輯器Editor 的時候卻又可以,
當你編譯成android與IOS在執行階段的時候

gameObject.isStatic  = true 或是 gameObject.isStatic =false;

都不會錯誤,但也沒有作用

所以在編輯時功能正常,移植過去時候就會出錯

Google play Game Service Unity 教學

圖片
Google Play Gmae Servie Unity教學 概念 我們需要由unity產生兩個資訊 1.package name (com.asssdfream.test2) 2.keystore 的SHA1 然後由 ansdrod developer console 產生兩個資訊回填到Unity中 1.資源檔 2.Client ID(客戶ID) 接著建立測試帳戶即可開始測試
詳細作法標題
1.建立Unity 專案 2.下載https://github.com/playgameservices/play-games-plugin-for-unity SDK,並加入套件 3.將專案設定成Android平台 4.為這個專案的APK