樹莓派4學習記錄(3)-安裝tensorflow

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}))

運行成功:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章