资源简介
基于卷积神经网络的食物图像识别,提供数据集下载,使用python、TensorFlow等等。
代码片段和文件信息
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
#加载数据集
mnist = input_data.read_data_sets(‘MNIST_data‘ one_hot=True)
#以交互式方式启动session
#如果不使用交互式session,则在启动session前必须
# 构建整个计算图,才能启动该计算图
sess = tf.InteractiveSession()
“““构建计算图“““
#通过占位符来为输入图像和目标输出类别创建节点
#shape参数是可选的,有了它tensorflow可以自动捕获维度不一致导致的错误
x = tf.placeholder(“float“ shape=[None 784]) #原始输入
y_ = tf.placeholder(“float“ shape=[None 10]) #目标值
#为了不在建立模型的时候反复做初始化操作,
# 我们定义两个函数用于初始化
def weight_variable(shape):
#截尾正态分布stddev是正态分布的标准偏差
initial = tf.truncated_normal(shape=shape stddev=0.1)
return tf.Variable(initial)
def bias_variable(shape):
initial = tf.constant(0.1 shape=shape)
return tf.Variable(initial)
#卷积核池化步长为10边距
def conv2d(x W):
return tf.nn.conv2d(x W strides=[1 1 1 1] padding=‘SAME‘)
def max_pool_2x2(x):
return tf.nn.max_pool(x ksize=[1 2 2 1]
strides=[1 2 2 1] padding=‘SAME‘)
“““第一层卷积“““
#由一个卷积和一个最大池化组成。滤波器5x5中算出32个特征,是因为使用32个滤波器进行卷积
#卷积的权重张量形状是[5 5 1 32]1是输入通道的个数,32是输出通道个数
W_conv1 = weight_variable([5 5 1 32])
#每一个输出通道都有一个偏置量
b_conv1 = bias_variable([32])
#位了使用卷积,必须将输入转换成4维向量,2、3维表示图片的宽、高
#最后一维表示图片的颜色通道(因为是灰度图像所以通道数维1,RGB图像通道数为3)
x_image = tf.reshape(x [-1 28 28 1])
#第一层的卷积结果使用Relu作为激活函数
h_conv1 = tf.nn.relu(conv2d(x_image W_conv1))
#第一层卷积后的池化结果
h_pool1 = max_pool_2x2(h_conv1)
“““第二层卷积“““
W_conv2 = weight_variable([5 5 32 64])
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1 W_conv2) + b_conv2)
h_pool2 = max_pool_2x2(h_conv2)
“““全连接层“““
#图片尺寸减小到7*7,加入一个有1024个神经元的全连接层
W_fc1 = weight_variable([7*7*64 1024])
b_fc1 = bias_variable([1024])
#将最后的池化层输出张量reshape成一维向量
h_pool2_flat = tf.reshape(h_pool2 [-1 7*7*64])
#全连接层的输出
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat W_fc1) + b_fc1)
“““使用Dropout减少过拟合“““
#使用placeholder占位符来表示神经元的输出在dropout中保持不变的概率
#在训练的过程中启用dropout,在测试过程中关闭dropout
keep_prob = tf.placeholder(“float“)
h_fc1_drop = tf.nn.dropout(h_fc1 keep_prob)
“““输出层“““
W_fc2 = weight_variable([1024 10])
b_fc2 = bias_variable([10])
#模型预测输出
y_conv = tf.nn.softmax(tf.matmul(h_fc1_drop W_fc2) + b_fc2)
#交叉熵损失
cross_entropy = -tf.reduce_sum(y_ * tf.log(y_conv))
#模型训练使用AdamOptimizer来做梯度最速下降
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
#正确预测得到True或False的List
correct_prediction = tf.equal(tf.argmax(y_ 1) tf.argmax(y_conv 1))
#将布尔值转化成浮点数,取平均值作为精确度
accuracy = tf.reduce_mean(tf.cast(correct_prediction “float“))
#在session中先初始化变量才能在session中调用
sess.run(tf.initialize_all_variables())
#迭代优化模型
for i in range(20000):
#每次取50个样本进行训练
batch = mnist.train.next_batch(50)
if i%100 == 0:
train_accuracy = accuracy.eval(feed_dict={
x: batch[0] y_:batch[1] keep_prob:1.0}) #模型中间不使用dropout
print(“step %d training accuracy %g“ % (i train_accuracy))
train_step.run(feed_dict={x:batch[0] y_:batch[1]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-06-04 13:33 Dish_CNN\
目录 0 2019-06-04 13:33 Dish_CNN\.idea\
文件 464 2019-05-03 13:39 Dish_CNN\.idea\Dish_CNN.iml
文件 298 2019-05-03 14:38 Dish_CNN\.idea\misc.xm
文件 275 2019-05-03 13:39 Dish_CNN\.idea\modules.xm
文件 28473 2019-06-03 17:40 Dish_CNN\.idea\workspace.xm
目录 0 2019-06-04 13:33 Dish_CNN\test_mnist\
目录 0 2019-06-04 13:33 Dish_CNN\test_mnist\.pytest_cache\
文件 37 2019-05-03 14:36 Dish_CNN\test_mnist\.pytest_cache\.gitignore
文件 194 2019-05-03 14:36 Dish_CNN\test_mnist\.pytest_cache\CACHEDIR.TAG
文件 303 2019-05-03 14:36 Dish_CNN\test_mnist\.pytest_cache\README.md
目录 0 2019-06-04 13:33 Dish_CNN\test_mnist\.pytest_cache\v\
目录 0 2019-06-04 13:33 Dish_CNN\test_mnist\.pytest_cache\v\cache\
文件 2 2019-05-03 14:52 Dish_CNN\test_mnist\.pytest_cache\v\cache\nodeids
文件 2 2019-05-03 14:52 Dish_CNN\test_mnist\.pytest_cache\v\cache\stepwise
目录 0 2019-06-04 13:33 Dish_CNN\test_mnist\MNIST_data\
文件 1590 2019-05-03 15:01 Dish_CNN\test_mnist\MNIST_data\convolutional.py
文件 335 2019-05-03 14:58 Dish_CNN\test_mnist\MNIST_data\input_data.py
文件 1625 2019-05-03 15:00 Dish_CNN\test_mnist\MNIST_data\model.py
文件 9912422 2019-05-03 14:49 Dish_CNN\test_mnist\MNIST_data\train-images-idx3-ubyte.gz
文件 4210 2019-05-03 14:41 Dish_CNN\test_mnist\test1.py
文件 12709 2019-05-03 14:36 Dish_CNN\test_mnist\__init__.py
目录 0 2019-06-04 13:33 Dish_CNN\test_two\
目录 0 2019-06-04 13:33 Dish_CNN\test_two\.pytest_cache\
文件 37 2019-05-03 18:33 Dish_CNN\test_two\.pytest_cache\.gitignore
文件 194 2019-05-03 18:33 Dish_CNN\test_two\.pytest_cache\CACHEDIR.TAG
文件 303 2019-05-03 18:33 Dish_CNN\test_two\.pytest_cache\README.md
目录 0 2019-06-04 13:33 Dish_CNN\test_two\.pytest_cache\v\
目录 0 2019-06-04 13:33 Dish_CNN\test_two\.pytest_cache\v\cache\
文件 2 2019-05-03 18:51 Dish_CNN\test_two\.pytest_cache\v\cache\lastfailed
文件 2 2019-05-03 18:51 Dish_CNN\test_two\.pytest_cache\v\cache\nodeids
............此处省略13个文件信息
相关资源
- 卷积神经网络的Python实现-参考代码
- 基于Python的卷积神经网络的分类
- Python-waifu2x利用卷积神经网络放大图片
- 卷积神经网络实现图像分类
- Python-基于卷积神经网络的Keras音频分
- 卷积神经网络源码
- keras库对Kaggle竞赛猫狗图像分类卷积神
- python3使用tensorflow构建CNN卷积神经网络
- CNN卷积神经网络python代码
- 基于卷积神经网络的手写数字识别
- 卷积神经网络人脸识别.txt
- 卷积神经网络轴承数故障分类
- 卷积神经网络回归模型
- Python-手势识别使用在TensorFlow中卷积神
- 利用keras实现的cnn卷积神经网络对手写
- 基于vggnet卷积神经网络的图像风格迁
- CNN卷积神经网络TensorFlow代码
- 卷积神经网络(CNN)源码
- minist+CNN+交叉验证
- python卷积神经网络实现
- 深度学习之一:卷积神经网络(CNN)
- 深度学习之二:用Tensorflow实现卷积神
- python实现的CNN代码
- CNN卷积神经网络-识别阿喵阿汪源代码
- minist-CNN-kreas-tsne.py
评论
共有 条评论