1. 安裝tensorflow
這裏可以參考這個:
https://blog.csdn.net/zqxdsy/article/details/102910840
1.1 獲取tensorflow安裝文件
我直接從piwheel官網得到tensorflow的安裝文件:
tensorflow安裝文件
安裝版本:
當然,因爲我是樹莓派4,所以選取了這個armv7l.
可以直接下載,迅雷,wget都可以,如果是學校的畫,可能wget更快一點,我也不知道爲什麼,反正前兩種方法都很慢。
1.2 安裝tensorflow
我選擇在python3.7,系統自帶的python環境中,直接安裝tensorflow
安裝方法:當然是使用pip3了,如果沒有的畫,建議百度直接安裝pip。
這裏給個傳送門:
https://blog.csdn.net/zqxdsy/article/details/102910840
按照上面這個教程,即可安裝好tensorflow
在安裝的過程中,可能會出現依賴庫下載報錯,很大程度上是因爲牆的問題,所以最好要麼有梯子,在有梯子的地方將其下載下來,然後安裝。
我目前還沒有嘗試換源,因爲上次換成中科大的源之後出現了錯誤,導致安裝失敗。
安裝成功:
2. 測試tensorflow
在服務器端訓練一個簡單的mnist模型:
# coding: utf-8
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
# 定義一個佔位符x
x = tf.placeholder(tf.float32, [None, 784]) # 張量的形狀是[None, 784],None表第一個維度任意
# 定義變量W,b,是可以被修改的張量,用來存放機器學習模型參數
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
# 實現模型, y是預測分佈
y = tf.nn.softmax(tf.matmul(x, W) + b)
# 訓練模型,y_是實際分佈
y_ = tf.placeholder("float", [None, 10])
cross_entropy = -tf.reduce_sum(y_ * tf.log(y)) # 交叉嫡,cost function
# 使用梯度下降來降低cost,學習速率爲0.01
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
# 初始化已經創建的變量
init = tf.global_variables_initializer()
# 在一個Session中啓動模型,並初始化變量
sess = tf.Session()
sess.run(init)
# 訓練模型,運行1000次,每次隨機抽取100個
for i in range(1, 1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
saver = tf.train.Saver()
saver.save(sess, "Model/model.ckpt")
# 驗證正確率
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
然後將得到的模型移植到樹莓派上,進行測試:
測試腳本:
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
# 定義一個佔位符x
x = tf.placeholder(tf.float32, [None, 784]) # 張量的形狀是[None, 784],None表第一個維度任意
# 定義變量W,b,是可以被修改的張量,用來存放機器學習模型參數
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
# 實現模型, y是預測分佈
y = tf.nn.softmax(tf.matmul(x, W) + b)
# 訓練模型,y_是實際分佈
y_ = tf.placeholder("float", [None, 10])
# cross_entropy = -tf.reduce_sum(y_ * tf.log(y)) # 交叉嫡,cost function
saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess, "./Model/model.ckpt")
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
運行成功: