一、安裝系統
1、下載Download ZIP文件。
Raspbian系統下載地址:https://www.raspberrypi.org/downloads/raspbian/
2、格式化TF卡(新卡可以不格式化處理):
下載格式化工具:SD card formatter
將TF卡插入讀卡器並連接電腦,打開軟件,選擇需要格式化的卡,點擊Format,其他選項默認。
3、系統鏡像寫入tf卡
下載寫入工具:win32diskimager
解壓下載的ZIP包得到一個.img的鏡像文件(解壓路徑不能含有中文)。
使用win32diskimager]軟件,選擇設備和解壓的.img的鏡像文件,點擊寫入。
二、樹莓派無鍵盤鼠標配置ssh和wifi
1、將系統鏡像寫入空白卡。
2.於 TF卡/boot/目錄下新建並命名一個ssh的文件:
3.新建並命名 wpa_supplicant.conf進行wifi配置:
3.新建並命名 wpa_supplicant.conf進行wifi配置:
文件中寫入如下配置內容;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB
network={
ssid="wifi name" //WiFi名字,不能有中文
psk="wifi password" //你的WiFi密碼
key_mgmt=WPA-PSK
}
4.完成後,將TF卡插入raspberry pi 並啓動電源。默認用戶名:pi 密碼:raspberry
三、樹莓派4b上安裝tensorflow2.0+keras
1、在/usr/local/下新建文件夾tf_pi
mkdir tf_pi
2.安裝虛擬環境
python3 -m pip install virtualenv
virtualenv env
source env/bin/activate
3、安裝各種環境
sudo apt-get install -y libhdf5-dev libc-ares-dev libeigen3-dev
python3 -m pip install keras_applications==1.0.8 --no-deps
python3 -m pip install keras_preprocessing==1.1.0 --no-deps
python3 -m pip install h5py==2.9.0
sudo apt-get install -y openmpi-bin libopenmpi-dev
sudo apt-get install -y libatlas-base-dev
python3 -m pip install -U six wheel mock
4.安裝tensorflow
wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v2.0.0/tensorflow-2.0.0-cp37-none-linux_armv7l.whl
python3 -m pip uninstall tensorflow
python3 -m pip install tensorflow-2.0.0-cp37-none-linux_armv7l.whl
5.重啓設備後,啓動虛擬環境
cd tf_pi
source env/bin/activate
6、試一下(應該可以顯示2.0.0):
7.沒有問題的話安裝keras(下面的install keras以外的4步其實都沒啥用,不過爲防萬一還是寫在這裏)(記住還是要在虛擬環境下安裝)
sudo apt-get install libhdf5-serial-dev
pip3 install h5py
pip3 install pillowimutils
pip3 install scipy--no-cache-dir
pip3 install keras
8、試一下
9、安裝JDK
sudo apt-get purge openjdk-8-jre-headless
sudo apt-get install openjdk-8-jre-headless
sudo apt-get install openjdk-8-jre
10.安裝PyCharm(從PyCharm官網下載下來,解壓後按照Install-Linux-tar.txt執行即可)
11.在PyCharm裏面設置虛擬環境:File->Settings->Project:xxxx->Project Interpreter,選擇那個小螺絲按鈕->Add
Existing environment裏面選擇剛纔虛擬環境裏面env/Python3.7,另外建議把【Make available to all projects】選上,以後就不用選了。
12.到此環境應該設置完畢了,寫入如下手寫數字識別代碼體驗下
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, optimizers, datasets
(x, y), (x_val, y_val) = datasets.mnist.load_data()
x = tf.convert_to_tensor(x, dtype=tf.float32) / 255.
y = tf.convert_to_tensor(y, dtype=tf.int32)
y = tf.one_hot(y, depth=10)
print(x.shape, y.shape)
train_dataset = tf.data.Dataset.from_tensor_slices((x, y))
train_dataset = train_dataset.batch(200)
model = keras.Sequential([
layers.Dense(512, activation='relu'),
layers.Dense(256, activation='relu'),
layers.Dense(10)])
optimizer = optimizers.SGD(learning_rate=0.001)
def train_epoch(epoch):
# Step4.loop
for step, (x, y) in enumerate(train_dataset):
with tf.GradientTape() as tape:
# [b, 28, 28] => [b, 784]
x = tf.reshape(x, (-1, 28*28))
# Step1. compute output
# [b, 784] => [b, 10]
out = model(x)
# Step2. compute loss
loss = tf.reduce_sum(tf.square(out - y)) / x.shape[0]
# Step3. optimize and update w1, w2, w3, b1, b2, b3
grads = tape.gradient(loss, model.trainable_variables)
# w' = w - lr * grad
optimizer.apply_gradients(zip(grads, model.trainable_variables))
if step % 100 == 0:
print(epoch, step, 'loss:', loss.numpy())
def train():
for epoch in range(30):
train_epoch(epoch)
if __name__ == '__main__':
train()
參考:
樹莓派4B安裝系統(Raspbian)
樹莓派中安裝JDK
安裝TensorFlow2.0
樹莓派4b上安裝tensorflow+keras