此代码编写依据 DataCamp 发表的一篇针对 TensorFlow 初学者的教程。此教程从向量和张量的基本概念说起,一步步实现了一个分类交通标志图像的神经网络。
1.加载并预处理数据
数据下载地址:http://btsd.ethz.ch/shareddata/。下载 BelgiumTSC_Training 和 BelgiumTSC_Testing。
数据下载完毕后,提取文件夹,整理好数据存放地址。我的Training和Testing数据存放地址如下:
/home/zhangxueying/images/TrafficSigns/Training
/home/zhangxueying/images/TrafficSigns/Testing
开始导入数据:(并将图片数据信息统一为28x28的灰度图片)
#load data
import os #python中的os模块用于处理文件和目录
import skimage #python中的skimage模块用于图像处理
import numpy as np #python中的numpy模块用于科学计算
from skimage import data,transform
from skimage.color import rgb2gray #rgb2gray将图片转化为灰度
#here data_directory="/home/zhangxueying/image/TrafficSigns/Training"
def load_data(data_directory):
directories=[d for d in os.listdir(data_directory) if os.path.isdir(os.path.join(data_directory,d))]
#d is every classification file
labels=[]
images=[]
for d in directories:
#每一类的路径
label_directory=os.path.join(data_directory,d)
file_names=[os.path.join(label_directory,f) for f in os.listdir(label_directory) if f.endswith(".ppm")]
#file_names is every photo which is end with ".ppm"
for f in file_names:
images.append(skimage.data.imread(f)) #read image
labels.append(int(d)) #read label
return images,labels
#images and labels are list
ROOT_PATH="/home/zhangxueying/image"
train_data_directory=os.path.join(ROOT_PATH,"TrafficSig