转载自:http://jermmy.xyz/2017/02/16/2017-2-16-learn-tensorflow-build-cnn-model/

最近跟着 Udacity 上的深度学习课程学了一丢丢 TensorFlow,这里记录一下用 TensorFlow搭建简单 CNN 网络的代码模板。

python代码

pickle_file = 'notMNIST.pickle'
with open(pickle_file, 'rb') as f:save = pickle.load(f)train_dataset = save['train_dataset']train_labels = save['train_labels']valid_dataset = save['valid_dataset']valid_labels = save['valid_labels']test_dataset = save['test_dataset']test_labels = save['test_labels']del save  # hint to help gc free up memoryprint('Training set', train_dataset.shape, train_labels.shape)print('Validation set', valid_dataset.shape, valid_labels.shape)print('Test set', test_dataset.shape, test_labels.shape)image_size = 28
num_labels = 10
num_channels = 1  # grayscale
batch_size = 16
patch_size = 5
depth = 16
num_hidden = 64
graph = tf.Graph()
with graph.as_default():# Input data.tf_train_dataset = tf.placeholder(tf.float32, shape=(batch_size, image_size, image_size, num_channels))tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))tf_valid_dataset = tf.constant(valid_dataset)tf_test_dataset = tf.constant(test_dataset)# Variables.layer1_weights = tf.Variable(tf.truncated_normal([patch_size, patch_size, num_channels, depth], stddev=0.1))layer1_biases = tf.Variable(tf.zeros([depth]))layer2_weights = tf.Variable(tf.truncated_normal([patch_size, patch_size, depth, depth], stddev=0.1))layer2_biases = tf.Variable(tf.constant(1.0, shape=[depth]))layer3_weights = tf.Variable(tf.truncated_normal([image_size // 4 * image_size // 4 * depth, num_hidden], stddev=0.1))layer3_biases = tf.Variable(tf.constant(1.0, shape=[num_hidden]))layer4_weights = tf.Variable(tf.truncated_normal([num_hidden, num_labels], stddev=0.1))layer4_biases = tf.Variable(tf.constant(1.0, shape=[num_labels]))# Model.def model(data):conv1 = tf.nn.relu(tf.nn.conv2d(data, layer1_weights, [1, 1, 1, 1], padding='SAME') + layer1_biases)pool1 = tf.nn.max_pool(conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')conv2 = tf.nn.relu(tf.nn.conv2d(pool1, layer2_weights, [1, 1, 1, 1], padding='SAME') + layer2_biases)pool2 = tf.nn.max_pool(conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')shape = pool2.get_shape().as_list()reshape = tf.reshape(pool2, [shape[0], shape[1] * shape[2] * shape[3]])fc1 = tf.nn.relu(tf.matmul(reshape, layer3_weights) + layer3_biases)return tf.matmul(fc1, layer4_weights) + layer4_biases# Training computation.logits = model(tf_train_dataset)loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, tf_train_labels))# Optimizer.optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(loss)# Predictions for the training, validation, and test data.train_prediction = tf.nn.softmax(logits)valid_prediction = tf.nn.softmax(model(tf_valid_dataset))test_prediction = tf.nn.softmax(model(tf_test_dataset))
num_steps = 1001
with tf.Session(graph=graph) as session:tf.initialize_all_variables().run()print('Initialized')for step in range(num_steps):offset = (step * batch_size) % (train_labels.shape[0] - batch_size)batch_data = train_dataset[offset:(offset + batch_size), :, :, :]batch_labels = train_labels[offset:(offset + batch_size), :]feed_dict = {tf_train_dataset: batch_data, tf_train_labels: batch_labels}_, l, predictions = session.run([optimizer, loss, train_prediction], feed_dict=feed_dict)if (step % 50 == 0):print('Minibatch loss at step %d: %f' % (step, l))print('Minibatch accuracy: %.1f%%' % accuracy(predictions, batch_labels))print('Validation accuracy: %.1f%%' % accuracy(valid_prediction.eval(), valid_labels))print('Max pool Test accuracy: %.1f%%' % accuracy(test_prediction.eval(), test_labels))

卷及神经网络

深度学习---TensorFlow学习笔记:搭建CNN模型相关推荐

  1. 从零开始,手把手教你使用Keras和TensorFlow构建自己的CNN模型

    最近学习CNN,搭建CNN模型时看网上鱼龙混杂的博客走了不少歪路,决定自己来总结一下. 注意本教程未必对所有版本有效,请根据需要的版本适当调整.文章中配置的环境是Python 3.8.12 ,Tens ...

  2. keras入门(三)搭建CNN模型破解网站验证码

    项目介绍   在文章CNN大战验证码中,我们利用TensorFlow搭建了简单的CNN模型来破解某个网站的验证码.验证码如下: 在本文中,我们将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的 ...

  3. 深度学习--TensorFlow(8)CNN卷积神经网络理论(计算机视觉)

    目录 计算机视觉介绍 1.计算机视觉应用 2.计算机视觉技术 图像分类 目标检测 目标跟踪 语义分割 实例分割 BP神经网络的缺点 一.卷积神经网络简介 1.卷积 2.全连接与局部感受野 3.权值共享 ...

  4. 动手学深度学习(tensorflow)---学习笔记整理(一、预备知识篇)

    学习视频来源为b站动手学深度学习系列视频:https://space.bilibili.com/209599371/channel/detail?cid=23541 由于上述视频为MXNet/Gluo ...

  5. 深度学习TensorFlow生产环境部署(模型部署篇)

    前一篇讲过环境的部署篇,这一次就讲讲从代码角度如何导出pb模型,如何进行服务调用. 1 hello world篇 部署完docker后,如果是cpu环境,可以直接拉取tensorflow/servin ...

  6. 吴恩达老师深度学习视频课笔记:序列模型和注意力机制

    基础模型:比如你想通过输入一个法语句子来将它翻译成一个英语句子,如下图,seq2seq模型,用x<1>一直到x<5>来表示输入句子的单词,然后我们用y<1>到y&l ...

  7. 深度学习TensorFlow学习-自定义网络

    上一篇文章讲解如何使用tf.keras 快速搭建网络,这篇讲解自定义一个神经网络结构. 使用 Sequential 可以快速搭建网络结构,但是如果网络包含跳连等其他复杂网络结构, Sequential ...

  8. Paddle平台中搭建CNN模型,在训练模型中采用tensor类型

    在构建好CNN网络模型之后,接下来便是通过训练集来对模型进行训练: 下面是这次搭建""美食分类"深度学习代码中,所用到的训练部分的代码: # CNN网络组建完毕之后,开始 ...

  9. 使用Pytorch搭建CNN模型完成食物图片分类(李宏毅视频课2020作业3,附超详细代码讲解)

    文章目录 0 前言 1 任务描述 1.1 数据描述 1.2 作业提交 1.3 数据下载 1.3.1 完整数据集 1.3.2 部分数据集 2 过程讲解 2.1 读取数据 2.2 数据预处理 2.3 模型 ...

最新文章

  1. 语言与golang语言运行速度_Golang语言情怀第3期 Go 语言数据类型
  2. mysql七种join理论
  3. 面试官让我讲下线程的TIMED_WAITING状态,我又笑了
  4. jax-rs jax-ws_创建一个简单的JAX-RS MessageBodyWriter
  5. 两家大型网贷平台竟在借款人审核问题上“偷懒”?
  6. Jquery +Ajax 请求Json文件,绘制Echarts 上下两个堆叠折线图
  7. 计算机答辩ppt演讲稿,毕业答辩PPT演讲稿范文ppt课件
  8. Pigx官方文档地址
  9. .NET6发布到linux
  10. win7的ie10浏览器打不开,就是双击图标无反应
  11. 学会做风格化游戏3D场景,关键是要会 “抓特征”
  12. linux 内核printk 打印信息查询方法
  13. java里用idea是什么意思_idea什么意思?啥意思?idea简介
  14. 计算机工作中只读不写,u盘实现只读不写方法
  15. java使用SAXReader读取xml文件
  16. 计算机日常故障DIY维修有哪些,计算机维护 DIY 完全手册
  17. js实现刷新页面的方法
  18. button标签的type属性
  19. AR502H-CN开发笔记01:硬件接口
  20. 小马哥----高仿苹果6 主板型号LT6082 芯片6582 真2g运存 15年新版山寨机型

热门文章

  1. 智源学术顾问David Harel:经典建模与AI的联姻,如何攻破机器学习的可解释性?| 大师讲座...
  2. 《预训练周刊》第28期:M6-10T:高效多万亿参数预训练的共享去链接范式、大模型自然语言处理的最新进展综述...
  3. 关于《写给青少年的数学故事:代数奇思》“二维码”一文的声明
  4. 【必点】程序员自助SDCC热门主题+图书豪华套餐
  5. 没有绝对安全的系统!激光瞄准二极管,25米外从被物理隔绝的计算机中窃取数据...
  6. 用经典图书评分数据集,练手推荐系统(附参考源码)
  7. 《图像分类》概述,李飞飞经典CS231N2021《卷积神经网络视觉识别》课程第二讲!...
  8. 独家 | 机器学习模型应用方法综述
  9. 自然语言处理数据集免费资源开放(附学习资料)
  10. 阿里副总裁、达摩院自动驾驶负责人王刚离职,将开启创业之路