發表文章

[DeepLearning] anaconda +tensorflow GPU 版本安裝

圖片
1.安裝 anaconda
官方網站下載點
根據電腦版本選擇下載檔案
以下說明已windows 10 64bit為主


2.創建 anaconda 虛擬環境

安裝anaconda後 開啟 Anaconda Prompt

創建環境: 運行conda create -n env_name pip python3.5 創建環境並安裝指定版本python
(建議依照官網需求)

啟動環境: activate env_name,注意看是否命令列的前方() 裡面是你的環境名稱


3.安裝tensorflow GPU版本 ( 可至此連結查看 GPU是否可用,建議數值大於3)

安裝步驟官網都有詳細介紹,以下只說大致流程
需要安裝的版本,建議依照官網所指示的版本進行下載
Tensorflow安裝步驟

在使用GPU版本的tensorflow前需要安裝 Nvidia CUDA ToolkitcuDNN (需註冊)

安裝Nvidia CUDA Toolkit完畢後
可以先在cmd中打入 nvcc --version 測試是否有成功安裝

將cuDNN進行下載解壓縮中,裡面的東西覆蓋至Nvidia CUDA Toolkit安裝的資料夾即可

在你所創立的虛擬環境中 鍵入以下指令:
pip install --ignore-installed --upgrade tensorflow-gpu (取至官網)
4.檢測是否安裝成功
進入Anaconda 的虛擬環境中,依照官網指示進行測試
如果成功使用gpu,應該會在命令列中印出GPU的相關資訊
有看到資訊表示使用完成,可以使用Spyder進行開發


5.如果想在虛擬環境中安裝spyder 可以參考此項
直接在Prompt中 打入指令 conda install spyder

[linux] 網路指令

ifconfig 查詢網路卡狀態

brctl 查詢bridge

/proc/net/bonding 下 可查詢bonding狀態

[Python] ctype 的型態小記

ctype的形式可參考官網

ctypes typeC typePython typec_bool_Boolbool (1)c_charchar1-character stringc_wcharwchar_t1-character unicode stringc_bytecharint/longc_ubyteunsignedcharint/longc_shortshortint/longc_ushortunsignedshortint/longc_intintint/longc_uintunsignedintint/longc_longlongint/longc_ulongunsignedlongint/long

[Python] 觀念小記

可變、不可變 參數分為可變、不可變兩種型態,不可變的有int,float,string

ex: str = 'abc'  , str[1] = 'a' , str[1] = 'd' -> error 不可

原因: Python變數使用參照方式,不可變形態中都是單一參照,不能對單獨內容改變


自訂義函式 定義中可以設定default值,但有設定的需在未設定的後面

ex: def add(a , b=0) -> ok  ,  def add (a = 1 ,b) -> error


輟星運算式
* , **  對函式輸入執行拆解 *拆解list , ** 拆解dictionary

ex: def add(*arg) -> add(1,2,3)  -> 輸入arg 為list -> arg=[1,2,3]


閉包和裝飾器
Python中 函式可以利用函式為輸入,在函式內有函式 又稱為閉包
利用此特性建立裝飾器 @

閉包
ex:
def add(num1): def add2(num2): return num1+num2 return add2
利用gen_power(2)(3) 分別當成輸入 num1 和 num2 ,輸出為5

可以看出來num1會傳遞至下一層def中

藉此方法修飾函式,製作成裝飾器

ex: 想製作一個通用的輸出decorator

def print_func(title): def decorator(func): def modified_func(*args,**kwards): result =func(*args,**kwards) print title , result return modified_func return decorator @print_func(title='result:') def add(*lst): return sum(lst) 執行 add(1,2,3) 輸出 result: 6
decorator的執行流程

print_func -> decorator -> modified_func(進入此層條件為有call add) …

[役男忘] 成功嶺的那十二天

紀錄一下研發替代役的那十二天

簡單幾句帶過讓未來的我有機會回首當初過了怎樣的生活

進去後最不自由的除了手機網路外,就是廁所時間
上廁所變成了集體行動,下意識的忍忍忍
我想是造就很多人久久沒便意的原因吧

研發替代役果然是替代役,在太陽下太久長官還會擔心你會不會曬昏
國高中的老師都不太會理你的說

食物的部分是類似國小營養午餐,但是比較清淡而且都放很久
中午的餐大概十點就到了,因此常常吃起來軟爛軟爛
幹部們看到我們加菜都很驚訝

沒事絕對不要去主動當什麼小老師,的確很有道理
因為那些微量加分還是比不上內務好好整理
當了唯一一個沒有榮譽價的過水小老師,另類特色
連最後名單上我的職位都不是小老師,真的一個義工路線

不滿就在到底三天大爆發,開始偷懶打混
才發現人家說得有道理,當你認真的時候別人打混
結果獎勵一樣,甚至你比別人差
這時侯還真的會覺得自己像笨蛋~

也讓我學到,在什麼場合就要用什麼態度
別帶著以為別人會發現你的努力地傻傻心態幹下去

整體來說算是有趣的經驗
大家一起過水,跟小老師們談論
過水班的學長人都很好,也讓我們有更多悠閒時間

十二天前後較慢以外,中間真的是非快
許許多多的規定在出來後才覺得有趣

當兵十二天真的沒什麼,但是認識一群有力的夥伴們也不錯

Raspberry Pi3 利用藍芽連結手機terminal

圖片
使用程式為python3,做法和一般藍芽使用socket不同。

Raspberry Pi 的藍芽配對成功後,無法直接透過手機app連線
程式兩端無法建立連線,尋找網路上的方法整合後大致概念如下
建立SPP連線,利用虛擬的Serial串口和藍芽端結合
並且修改藍芽端連線的設定檔,使其能夠在兼容模式下被連結

1. 修改藍芽設定檔
在console 中 輸入
$sudo nano /etc/systemd/system/dbus-org.bluez.service 修改設定檔 找到 ExecStart 將其修改成,以兼容模式執行 ExecStart=/usr/lib/bluetooth/bluetooth -C 並在其下方新增 ExecStartPost=/usr/bin/sdptool add SP 添加至SP Profile 修改完畢後存檔重新啟動




2.把需要的藍芽裝置加入信任名單


$sudo bluetoothctl 執行藍芽程序 $ agent on pair 98:23:33:44:55:66 你的藍芽地址 並且 加入信任名單 trust 98:23:33:44:55:66



$sudo rfcomm watch hci0 //開啟監控 等待連線 (監聽藍芽) 使用手機上的藍芽terminal 進行連線 顯示如下

表示連線成功,便可以透過serial 的方式擷取資料。



Matlab連線Mysql教學

圖片
使用Matlab連線Mysql簡易教學


1. 先去Matlab官網去看你所使用的資料庫類型


2.以下範例皆使用一般常見的Mysql資料庫,至此下載mysql的jar庫,兩個都可以




3.將資料解壓縮打開資料夾,找到mysql-connector-java-5.1.41-bin.jar,版本不一定相同,請找字尾是.jqr檔案

4. 將此.jar檔案複製到你的Matlab安裝資料夾下的\java\jar下,例如MATLAB\2016b\java\jar

5. 到Matlab安裝資料夾下的toolbox下的local,修改classpath.txt檔案,請使用管理員權限

6.貼上這一行$matlabroot/java/jar/mysql-connector-java-5.1.41-bin.jar,版本號看你下載的.jar版本







7.重新啟動Matlab

8.指令的格式如下,如果順利以下程式都會進行,如果失敗可以在指令列貼上conn那行,並且看輸出資料中的message偵錯


%設定mysql 連線資料 database('database','name','password','driver','url') % 格式參考 https://www.mathworks.com/help/database/ug/database.html#btcmnv1 conn = database('資料庫名稱','使用者名稱','密碼','com.mysql.jdbc.Driver',url); url範例:如果是本機則使用 'jdbc:mysql://127.0.0.1:3306/' sql='SELECT * FROM 表單'; curs = exec(conn,sql,maxTimeout); maxTimeout為最大讀取的等待時間,可有可無 curs = fetch(curs); 得到cursor後開始讀取cursor的資料 DATA = curs.Data; 讀出資料 資料型態為cell 取用方法 DATA{n,m,...} c…