树莓派安装TensorFlow并使用[一步到位]

树莓派安装TensorFlow并使用【一步到位】

安装TensorFlow并使用(树莓派3B+)

    • 树莓派安装TensorFlow并使用【一步到位】
  • 换源并更新
    • 安装TensorFlow依赖包
      • 安装TensorFlow并使用
        • 各种问题

换源并更新

安装系统和ssh以及vnc的使用,去买树莓派的淘宝店要教程就行,这里默认你已经安好系统

1.备份源文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak

2.更换软件更新源

sudo nano /etc/apt/sources.list

3.将第一行改为中科大的源,Ctrl+O」进行保存,然后回车,「Ctrl+X」退出。如图所示

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

树莓派安装TensorFlow并使用[一步到位]_第1张图片

4.修改系统更新源

sudo nano /etc/apt/sources.list.d/raspi.list

5.将第一行修改成中科大的系统源地址,「Ctrl+O」进行保存,然后回车,「Ctrl+X」退出。如图所示

deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui

树莓派安装TensorFlow并使用[一步到位]_第2张图片
6.pip换源

sudo vim /etc/pip.conf

在最后输入,如图所示(原来的可用#变为注释,防止以后改回来)

extra-index-url=https://mirrors.aliyun.com/pypi/simple/

树莓派安装TensorFlow并使用[一步到位]_第3张图片

7.更新

sudo apt-get update
sudo apt-get upgrade
pip install --upgrade pip

一些国内源
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣 http://pypi.douban.com/simple/
Python官方 https://pypi.python.org/simple/
v2ex http://pypi.v2ex.com/simple/
中国科学院 http://pypi.mirrors.opencas.cn/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

参考
pip换源
apt换源

安装TensorFlow依赖包

1.安装python3.7.3
(1)安装所需依赖

sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev

(2)解压python安装包
先进入python安装包所在目录,再解压

cd mydownload
tar zxvf Python-3.7.3.tgz

(3)编译安装

sudo mkdir /usr/local/python373
sudo ./configure --prefix=/usr/local/python373
sudo make
sudo make install

(4)创建符号链接

sudo ln -s /usr/local/python373/bin/python3 /usr/bin/python3.7
sudo ln -s /usr/local/python373/bin/pip3 /usr/bin/pip3.7

PS:若pip没有安装,则是编译安装时有依赖没有安装,需要卸载后安装依赖再安装

参考
安装python3.7.0

2.安装模块和虚拟环境

sudo apt install libatlas-base-dev 
sudo pip3.7 install -U virtualenv  # 虚拟环境不用也行

3.创建虚拟环境

virtualenv abcd #abcd是虚拟环境的名字

4.进入虚拟环境

source abcd/bin/activate   #此条命令为进入虚拟环境
deactivate  #此条命令为退出虚拟环境

5.安装依赖包
(1)先给pip3.7换源,操作同上文

sudo vim /etc/pip3.7.conf   #进入后修改文本,如上文
pip3.7 install --upgrade pip

(2)安装依赖

pip3.7 install keras_applications==1.0.8 --no-deps
pip3.7 install keras_preprocessing==1.1.0 --no-deps
pip3.7 install h5py==2.9.0
pip3.7 install -U six wheel mock
pip3.7 install pillow

若安装不上,可用whl文件安装,操作方法如下

cd wenjian #进入whl文件位置
pip3.7 install ./xxx/   #xxx为文件名

传文件教程
用filezilla传文件

参考
安装TensorFlow

安装TensorFlow并使用

1.安装TensorFlow

pip3.7 install tensorflow==2.0.0   #也可以用whl安装

2.在电脑上训练模型

import h5py
import tensorflow as tf
from tensorflow import keras


#载入mnist数据集,将样本从整数转换为浮点数
mnist = tf.keras.datasets.mnist



(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))
train_images, test_images = train_images / 255.0, test_images / 255.0
#将模型的各层堆叠起来,以搭建 tf.keras.Sequential 模型。为训练选择优化器和损失函数

model = keras.models.Sequential()
# 第1层卷积,卷积核大小为3*3,32个,28*28为待训练图片的大小
model.add(keras.layers.Conv2D(
    32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(keras.layers.MaxPooling2D((2, 2)))
# 第2层卷积,卷积核大小为3*3,64个
model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(keras.layers.MaxPooling2D((2, 2)))
# 第3层卷积,卷积核大小为3*3,64个
model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))

model.add(keras.layers.Flatten())  # 数据变一维
model.add(keras.layers.Dense(64, activation='relu'))  # 全连接64个
model.add(keras.layers.Dense(10, activation='softmax'))  # 全连接10个输出



#优化器,损失函数,精度
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
#训练并验证模型
model.fit(train_images, train_labels, epochs=5)   #重复5次

model.evaluate(test_images,  test_labels, verbose=2)


# 保存模型
model.save("t2.h5") #模型和py文件在同一目录


2.将各种东西传入树莓派
树莓派安装TensorFlow并使用[一步到位]_第4张图片
3.运行使用程序

import tensorflow as tf
from tensorflow import keras
from PIL import Image
import numpy as np
import h5py


#导入模型
shuzimodel = keras.models.load_model('t2.h5')
shuzimodel.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])


#改变图片大小(非必需)
class Change():

    def change(self,infile):
        image = Image.open(infile)  # 图片格式更改(原图片地址)
        outfile = 'C:/Users/86159/Desktop/PYTHON/mnist/shuzi/xin.png'#改后地址
        image.save(outfile, "PNG")#修改图片格式
        im = Image.open(infile)
        (x,y) = im.size #原图片尺寸
        x_s = 28 #定义x
        y_s = 28 #定义y
        out = im.resize((x_s,y_s),Image.ANTIALIAS) #修改图片尺寸
        out.save(outfile)

#图像识别
class Predict(object):
    def __init__(self):
        pass
    def predict(self, image_path):

        # 以黑白方式读取图片
        img = Image.open(image_path).convert('L')   #Image模块,convert将图片转换(L为彩色变黑白)
        img = np.reshape(img, (28, 28, 1)) / 255.
        x = np.array([1 - img])   #产生数组

        y = shuzimodel.predict(x)    #predict为预测函数,预测输出为数值

        # 因为x只传入了一张图片,取y[0]即可
        # np.argmax()取得最大值的(索引值)下标,即代表的数字
        print('预测数字为:', np.argmax(y[0]))



a=Change()   #a为改变图片大小类
app = Predict()  #app为预测类



app.predict('C:/Users/86159/Desktop/PYTHON/mnist/0.png')  #这里的地址为树莓派里图片地址
app.predict('C:/Users/86159/Desktop/PYTHON/mnist/1.png')
app.predict('C:/Users/86159/Desktop/PYTHON/mnist/4.png')

a.change('C:/Users/86159/Desktop/PYTHON/mnist/x5.jpg')  #非必需
app.predict('C:/Users/86159/Desktop/PYTHON/mnist/shuzi/xin.png')  #非必需

4.成功
树莓派安装TensorFlow并使用[一步到位]_第5张图片

各种问题

1.如果出现以下问题,中间步骤少做了,重装系统再来一遍吧,其他方法都没用,我试过了
在这里插入图片描述
2.若出现如下,解决也是重装系统再来一遍,其他办法没用
(把东西全卸了再来或许可以,我没试过)

libhdf5_serial.so.103: cannot open shared object file: No such file or directory

3.若模型使用出现下图,则是树莓派和电脑的TensorFlow版本不一致,需要在电脑上换个版本训练模型(虚拟环境安个python3.7.3和TensorFlow2.0就行)
在这里插入图片描述

你可能感兴趣的:(树莓派,tensorflow,深度学习,python,神经网络,机器学习)