香蕉派BPI-M2Z安装TensorFlow并加载鸢尾花卉数据集绘图

作者: Litthins
上传时间为: 2018-06-22 08:42 AM
2018-06-22
阅读:

大家好,很高兴又见面了,首先还是要感谢爱板网提供的这个试用的板子。

本次分享的是在香蕉派BPI-M2Z安装TensorFlow并加载鸢尾花卉数据集,我将演示如何用python自带的csv模块读取数据并转化为tensorflow可以处理的类型,最后我们用matplotlib把数据画出来。

一、Tensorflow的安装

推荐使用这个链接:https://github.com/samjabrahams/tensorflow-on-raspberry-pi,内容非常详细。

注意,这里有两个可用版本,一个是针对python2.7的,而另一个是针对3.4的。由于我们的系统使用的是python2.7+python3.5,在3.5上安装这个3.4的tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl会报错,所以我们使用2.7版本。

首先做一下准备工作:

sudo apt-get update
sudo apt-get install python-pip python-dev
然后按照README文档一步一步走:
wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp27-none-linux_armv7l.whl
sudo pip install tensorflow-1.1.0-cp27-none-linux_armv7l.whl
sudo pip uninstall mock
sudo pip install mock
这样Tensorflow就安装好啦,然后我们尝试安装matplotlib,不要使用pip,会有很多依赖要自己解决,这里我们用这个:
apt install python-matplotlib

这样matplotlib也安装完毕了,如果使用pip安装时遇到下述问题,请尝试用这个方法来解决:

Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module><module>"
ImportError: cannot import name main

root@bananapim2zero:~# python -m pip uninstall pip
root@bananapim2zero:~# apt install python-pip --reinstall</module>

然后我们需要导入鸢尾花卉数据集,这里使用用于测试的CSV文件,需要使用CSV模块,python自带的,所以不用去安装,直接import进来。

让我们尝试在python2.7里导入这三个模块,如下图。

三个模块均导入成功,下一步我们进入VNC实际操作一波,把图像画出来,VNC的使用,请参考我的上一篇经验:

香蕉派BPI-M2Z刷基于Ubuntu16.04的Armbian桌面系统

然后是python程序的编写,直接放代码啦:

#Litthins 2018年6月19日#

import csv
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from itertools import islice

#读取iris_test.csv文件
iris_data=csv.reader(open('./iris_test.csv','r'))
print(iris_data)
#创建用于存放数据的数组
sepal_len=[]
sepal_wid=[]
petal_len=[]
petal_wid=[]
#遍历文件内容,将我们需要的数据转化为需要的格式
for sample in islice(iris_data,1,None):
    sepal_len.append(eval(sample[0]))
    sepal_wid.append(eval(sample[1]))
    petal_len.append(eval(sample[2]))
    petal_wid.append(eval(sample[3]))
print(sepal_len)
print(sepal_wid)
print(petal_len)
print(petal_wid)
#创建二维列表
sepal_data=[sepal_wid,sepal_len]
petal_data=[petal_wid,petal_len]
print(sepal_data)
print(petal_data)
#将python的list类转换为numpy的array类,再转换为tensorflow的张量
#输出sepal_out和petal_out是我们需要的变量
sess=tf.Session()
sepal_out=sess.run(tf.convert_to_tensor(np.array(sepal_data)))
sepal_wid_tf,sepal_len_tf=sepal_out
petal_out=sess.run(tf.convert_to_tensor(np.array(petal_data)))
petal_wid_tf,petal_len_tf=petal_out
print(sepal_wid_tf)
print(sepal_len_tf)
print(petal_wid_tf)
print(petal_len_tf)
#调用matplotlib绘图
plt.subplot(1,2,1)
plt.scatter(sepal_wid_tf,sepal_len_tf)
plt.title("sepal_tf")
plt.xlabel("sepal_wid_tf")
plt.ylabel("sepal_len_tf")
plt.grid(True)
plt.subplot(1,2,2)
plt.scatter(petal_wid_tf,petal_len_tf)
plt.title("petal_tf")
plt.xlabel("petal_wid_tf")
plt.ylabel("petal_len_tf")
plt.grid(True)
plt.show()

再放个图,有图有真相,哈哈O(∩_∩)O

源码和数据集已经以附件的形式上传,分享链接在这里:iris.py  iris_test.csv

那今天就先到这里啦,喝杯咖啡,我们下次见喽!

作者:Litthins

日期:2018年6月19日

相关经验
全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示