TnsorFlow+CNN猫狗识别
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TnsorFlow+CNN猫狗识别相关的知识,希望对你有一定的参考价值。
TnsorFlow+CNN猫狗识别
0.input_data.py
a.get_files(file_dir)
相关函数介绍
os.listdir()
方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
它不包括 . 和 … 即使它在文件夹中。
只支持在 Unix, Windows 下使用。
**listdir()**方法语法格式如下:
os.listdir(path)
- path – 需要列出的目录路径
返回值
返回指定路径下的文件和文件夹列表。
np.hstack()
在这里我们介绍两个拼接数组的方法:
np.vstack():在竖直方向上堆叠
np.hstack():在水平方向上平铺
transpose()
temp = np.array([image_list, label_list]) # 生成一个2 X 25000的数组,即2行、25000列
temp = temp.transpose() # 转置向量,大小变成25000 X 2
把猫和狗的图片 以及 对应标签(0表示猫,1表示狗) 表示成25000*2矩阵。
然后返回图片列表 和 标签列表。
1.test.py
a.get_one_image(img_lst)
def get_one_image(img_list):
"""
输入:
img_list:图片路径列表
返回:
image:从图片路径列表中随机挑选的一张图片
"""
n = len(img_list) # 获取文件夹下图片的总数
ind = np.random.randint(0, n) # 从 0~n 中随机选取下标
img_dir = img_list[ind] # 根据下标得到一张随机图片的路径
image = Image.open(img_dir) # 打开img_dir路径下的图片
image = image.resize([208, 208]) # 改变图片的大小,定为宽高都为208像素
image = np.array(image) # 转成多维数组,向量的格式
return image
随机从列表从选取一个图片,然后转换成多维数组形式。
b.evaluate_one_image
根据训练模型 对图片进行预测分类。
2.model.py
- model.py:负责实现我们的神经网络模型
"""
输入:
images:队列中取的一批图片, 具体为:4D tensor [batch_size, width, height, 3]
batch_size:每个批次的大小
n_classes:n分类(这里是二分类,猫或狗)
返回:
softmax_linear:表示图片列表中的每张图片分别是猫或狗的预测概率(即:神经网络计算得到的输出值)。
例如: [[0.459, 0.541], ..., [0.892, 0.108]],
一个数值代表属于猫的概率,一个数值代表属于狗的概率,两者的和为1。
"""
第一层:卷积层cov1
第一层:池化层pool1
第二层的卷积层cov2
第二层:池化层pool2
第三层:全连接层local3 连接256个神经元
第四层为全连接层local4,再连接512个神经元
第五层:输出层(回归层): softmax_linear 在这里是2类,所以这个层输出的是两个得分。
3.运行结果
4.参考视频
https://www.bilibili.com/video/BV1TU4y1H7u7/?spm_id_from=333.788.recommend_more_video.0
以上是关于TnsorFlow+CNN猫狗识别的主要内容,如果未能解决你的问题,请参考以下文章