图中外婆照顾附近流浪猫,但是一只北美负鼠,一种会偷食物、装死的巨大鼠类混进猫群住了1年。外婆竟然还给这个老鼠起了一个名字,看来真是傻傻分不清楚猫和老鼠了。今天就用Tensorflow来完成一个深度学习的程序带大家学习一下深度学习,如何通过猫和狗的照片进行学习,进而可以帮助这位外婆区分那些是真猫,防止老鼠混入猫群。
项目目标:实现猫狗识别分类任务
项目难度:★★★
项目难就想退缩?放心本篇文章会逐一讲解代码内容知识!别再担心撸完神经网络代码,一脸懵逼的表情包啦!
项目逻辑:
①从系统文档中提取一部分猫狗图片为测试集。(input_data.py)
②建立神经网络模型。(model.py)
③通过测试集对模型进行训练,准确率提高以后利用模型对猫狗进行识别分类(training.py)
本节内容我们主要以讲任务②——神经网络模型搭建为主。
一起来玩耍吧
Model.py项目核心代码:
1. import tensorflow as tf
首先我们导入TensorFlow神经网络框架,简称为tf
1. def inference(images, batch_size, n_classes):
2. with tf.variable_scope('conv1') as scope:
3. weights = tf.get_variable('weights',
4. shape = [3,3,3, 16],
5. dtype = tf.float32,
6. initializer=tf.truncated_normal_initializer(stddev=0.1,dtype=tf.float32))
7. biases = tf.get_variable('biases',
8. shape=[16],
9. dtype=tf.float32,
10. initializer=tf.constant_initializer(0.1))
11. conv = tf.nn.conv2d(images, weights, strides=[1,1,1,1], padding='SAME')
12. pre_activation = tf.nn.bias_add(conv, biases)
13. conv1 = tf.nn.relu(pre_activation, name= scope.name)
我们用关键字def创建一个名叫inference的方法,其中image为我们模型需要测试的图片,batch_size为我们训练图片分批次的大小,n_calsses为2,即猫狗二分类任务。
随后我们利用tf.truncated_normal_initializer定义weights(权重),以及tf.constant_initializer 定义biases(偏差),最后利用tf.nn.conv2d函数对图片进行卷积运算。
1. with tf.variable_scope('pooling1_lrn') as scope:
2. pool1 = tf.nn.max_pool(conv1, ksize=[1,3,3,1],strides=[1,2,2,1],
3. padding='SAME', name='pooling1')
4. norm1 = tf.nn.lrn(pool1, depth_radius=4, bias=1.0, alpha=0.001/9.0,
5. beta=0.75,name='norm1')
定义池化层,对图片进行优化特征处理。
项目总结:
怎么样!是否在小编的文中学到很多东西呢?因篇幅有限,未能给大家展示深度学习神经网络架构的“庐山真面目”,但本文章还有更多续集,期待你的关注!
文章更多细节请关注我们,将在后面文章呈现,或者在加入人工智能社群:搜索(TensorFlow-天下互联)!这里有更多案例,更多朋友啊。也可以跟小编直接交流。另外也可以点击左下角:了解更多,通过我们网站加入我们社群!