#Install required packages
pip install flask==2.1.1
pip install Pillow==9.1.0
pip install tensorflow==2.3.1
pip install keras==2.4.3
2022年12月31日 星期六
佈署AI模型於Web 上
2022年12月1日 星期四
[Python] Python的變數僅僅只是一個tag
在python 世界裡, 宣告的變數僅僅只是一個tag。而tag 可以到處貼, 所以當你問 tag 的資料型態時 , 那就是在問tag 當下所貼的位置的物件資料型態為何 ?
a=3 , 則 type(a)==> int
b=3.14 , 則 type(b)==> float
c="hello" , 則 type(c)==> str
3, 3.14, "hello" 這都是物件, 佔有空間 ,而a, b, c 就是tag name, 只是一個名字用來存取物件而已。
python 的變數完全不同於C/C++ 變數的概念。C/C++ 變數是佔有空間的, 空間存放著資料, 而空間有多大就決定了資料的數值範圍。
int a=64; (佔4個bytes)
char ch='A'; (佔1個bytes)
你可能會問一個問題, Python 的變數用這樣搞有什麼好處?
用個例子說明好了, a=[1,2,3]
若要複製一份給c, 執行 c=a.copy() 就會將a的container 表格複製給c, 因為只是複製了container a 表格, 和資料物件多大沒有關係, 所以可以很快,也不用將相同的資料物件在記憶體中放兩份。若是C/C++ 則a, c 是各別的空間, 因此即使是相同的資料,在記憶體中也得各自存放一份,會比較佔空間,而且在複製資料時也得一個個byte 複製過去 ( memcpy),速度上也比較慢。
相關文章:
2022年11月5日 星期六
[Notepad ++]新增GNU ARM Assembly 語言格式
在Notepad ++編輯器新增GNU ARM Assembly 語言格式
2022年11月1日 星期二
[Python] List is not what you think
[1]TensorFlow Lite for MCU https://bit.ly/3j2fIIt
2022年10月7日 星期五
[Python] Why do we need frozenset ?
(1) 用frozenset 才可以用集合當作Key
Example:
itemsets=[{'B','C'},{'D'}]
count[{'B','C'}]+=1 # Error : "unhashable type: 'set'"
in this case, we can use frozenset to make 'set' as a key
count[frozenset({'B','C'})]=1
(2) 用frozenset 才可以做集合包含集合
S=set()
e={'A','B','C'}
S.add (e) ==> 想要表示 S={{'A'},{'B'},{'C'}} --> TypeError: unhashable type: 'set'
S.add (frozenset(e)) -->OK S={frozenset({'A', 'B', 'C'})}
2022年8月29日 星期一
[Raspberry Pi ] 查詢 Software and Hardware Version of a Raspberry Pi
How to Check the Software and Hardware Version of a Raspberry Pi
- cat /etc/os-release
- uname -a
- cat /proc/cpuinfo | grep Model
2022年8月12日 星期五
[Linux 程式設計] 關於GCC
1. 後面的-lxxxx 如果是linux他的位置在哪裡?
(base) ubuntu@ubuntu1804:/usr/lib$ cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf
2022年8月1日 星期一
Jupyter notebook 延伸工具
超好用的2個Jupyter notebook 延伸工具
- Table of content : 針對Markdown cell 提供目錄
- autopep8: python代碼格式化工具
2022年7月6日 星期三
[Linux 系統程式設計] 關於sigaction 的 SA_RESTART flag
Linux 系統程式設計
#include <signal.h> int sigaction(int signum, const struct sigaction *restrict act, struct sigaction *restrict oldact);
The sigaction structure is defined as something like: struct sigaction { void (*sa_handler)(int); void (*sa_sigaction)(int, siginfo_t *, void *); sigset_t sa_mask; int sa_flags; void (*sa_restorer)(void); };
在sigaction結構中, 有一個 sa_flags 欄位可以設定為 SA_RESTART , 這代表什麼意思呢? 原文如下
SA_RESTART If a blocked call to one of the following interfaces is interrupted by a signal handler, then the call is automatically restarted after the signal handler returns if the SA_RESTART flag was used; otherwise the call fails with the error EINTR.
例如, Socket programming 的 accept() 就是一個blocked system call,當程序停留在這個系統呼叫時, 若收到signal 則會跳到對應的signal handler去執行, 那signal handler 執行完成後呢?
OK, 那要繼續回到原呼叫 accept() 的狀態,,可以在sigaction結構的sa_flags 設定SA_RESTART , 再呼叫sigaction() 中進行設定即可
2022年6月25日 星期六
UART over TTL/RS232
UART 是軟體層面的 serial 通訊協議(也可以借力 UART IC來完成)。定義baudrate, start bit, stop bit , data bit, parity check 等等, 但這些0和1都是只邏輯的0和1。而實際走的硬體訊號, 則要看使用的是TTL還是 RS232。TTL和 RS232 描述的是 Physical 電氣訊號。
TTL (transistor-transistor logic) 就是定義 0V 為 0,Vcc 為 1 , 一般 MCU、SoC 都會用的方式。 RS-232 定義 -3 to -25V 為 0, 而+3V~+25V為1。不過 RS232 是一個完善的標準通訊規範,所以尚包含硬體流量控制的機制及 Connector 的型式(如DB-9) 等內容。正常的PC 用的就是RS232 界面。不過若僅僅只是做基本的傳輸,不是拿來接數據機(Modem)這類的,其實也只是用了其中3條通訊線而已,TXD, RXD, GND。現在你懂了,為何 UART over TTL 只有3條訊號線的原因。
Source image: https://components101.com/ |
2022年6月22日 星期三
[C語言]字串處理函式:strspn, strpbrk
2022年5月30日 星期一
Disables dynamic cpufreq
Boot loader程式放入 Pi3中, 一開機剛開始跑的時候,LED 閃爍頻率都很正常 , 但大約經過約10秒左右 , 時間會變快 . 例如LED 0.5sec閃爍一次 , 經過10sec後變快小於0.5sec閃爍,是哪裡的設定需要再做調整修改 ?
#Disables dynamic cpufreq driver
add this line "force_turbo=1" to config.txt .
2022年5月24日 星期二
[ C 語言] gcc 定義巨集
[ C 語言]
1.) 在程式檔中 (,c 或.h) 定義 DEBUG
#define DEBUG
2.) 不改變在程式檔, 而是在程式編譯階段去定義 DEBUG
gcc -DDEBUG debug.c -o test
另外也可以設定 DEBUG的值, 如 gcc -DDEBUG=4 debug.c -o test
(以上等同在hello.c 內加入了 #define DEBUG 或 #define DEBUG 4 這一行 )
其實, 若 寫 -DDEBUG 隱含 -DDEBUG=1 的意思
pi@ittraining:~/LinuxPro/trunk/source/ch3 $ gcc debug.c -DDEBUG=1 -o test
debug.c:4: warning: "DEBUG" redefined
#define DEBUG 3
<command-line>: note: this is the location of the previous definition
2022年4月30日 星期六
[C 語言] 有無const 的差異?
2022年3月29日 星期二
什麼是機器學習? (學習簡介)
2022年3月15日 星期二
[MCU單晶片 Q&A] ADC工作頻率
2022年3月13日 星期日
[MCU單晶片 Q&A] 中斷
2022年3月9日 星期三
[MCU單晶片 Q&A] I2C 操作
[I2C 操作]
Question : 在I2C的START function 裡要先檢查SDA 是否已經為0,來決定是否進行後面是否要將SCL=0和SDA=1的動作,這樣和範例是藉由Din 來判斷是一樣的嗎? 而 Din 是SDA接腳的接收輸入接腳,為什麼要定義這個接腳呢?而沒有SCL的輸入接腳的定義
- TRIS register (data direction register)
- PORT register (reads the levels on the pins of the device)
- LAT register (output latch)
2022年2月25日 星期五
PCB Layout 入門教學(八) ---PCBA 人工打件
(1) 製作鋼板: 為PCB 板製作一個鋼板,這是一次性的成本。鋼板上有洞的地方就是等等要上錫的位置。
2022年1月21日 星期五
機率
Random variable
- A discrete random variable X is a quantity that can assume any value x from a discrete list of values with a certain probability.
- The probability that the random variable X assumes the particular value x is denoted by Pr(X = x). This collection of probabilities, along with all possible values x, is the probability distribution of the random variable X.
Discrete Probability Rules |
---|
|
Cumulative Distribution Function of a Discrete Random Variable |
---|
The cumulative distribution function (CDF) of a random variable X is denoted by F(x), and is defined as F(x) = Pr(X ≤ x). Using our identity for the probability of disjoint events, if X is a discrete random variable, we can write where xn is the largest possible value of X that is less than or equal to x |
Binomial PDF |
---|
If X is a binomial random variable associated to n independent trials, each with a success probability p, then the probability density function of X is: where k is any integer from 0 to n. Recall that the factorial notation n! denotes the product of the first n positive integers: n! = 1·2·3···(n-1)·n, and that we observe the convention 0! = 1. |
Definition: Expected Value of a Discrete Random Variable |
---|
The expected value, , of a random variable X is weighted average of the possible values of X, weight by their corresponding probabilities: where N is the number of possible values of X. |