原文链接

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 15 21:49:08 2018@author: luogan
"""import tensorflow as tf
from sklearn.datasets import load_digits
import numpy as np
digits = load_digits()
X_data = digits.data.astype(np.float32)
Y_data = digits.target.astype(np.float32).reshape(-1,1)
print (X_data.shape)
print (Y_data.shape)from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()
X_data = scaler.fit_transform(X_data)
from sklearn.preprocessing import OneHotEncoder
Y = OneHotEncoder().fit_transform(Y_data).todense() #one-hot编码
X = X_data.reshape(-1,8,8,1)batch_size = 8 # 使用MBGD算法,设定batch_size为8def generatebatch(X,Y,n_examples, batch_size):for batch_i in range(n_examples // batch_size):start = batch_i*batch_sizeend = start + batch_sizebatch_xs = X[start:end]batch_ys = Y[start:end]yield batch_xs, batch_ys # 生成每一个batchtf.reset_default_graph()
# 输入层
tf_X = tf.placeholder(tf.float32,[None,8,8,1])
tf_Y = tf.placeholder(tf.float32,[None,10])# 卷积层+激活层
conv_filter_w1 = tf.Variable(tf.random_normal([3, 3, 1, 10]))
conv_filter_b1 =  tf.Variable(tf.random_normal([10]))
relu_feature_maps1 = tf.nn.relu(\tf.nn.conv2d(tf_X, conv_filter_w1,strides=[1, 1, 1, 1], padding='SAME') + conv_filter_b1)# 池化层
max_pool1 = tf.nn.max_pool(relu_feature_maps1,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME')print (max_pool1)conv_filter_w2 = tf.Variable(tf.random_normal([3, 3, 10, 5]))
conv_filter_b2 =  tf.Variable(tf.random_normal([5]))
conv_out2 = tf.nn.conv2d(relu_feature_maps1, conv_filter_w2,strides=[1, 2, 2, 1], padding='SAME') + conv_filter_b2
print (conv_out2)batch_mean, batch_var = tf.nn.moments(conv_out2, [0, 1, 2], keep_dims=True)
shift = tf.Variable(tf.zeros([5]))
scale = tf.Variable(tf.ones([5]))
epsilon = 1e-3
BN_out = tf.nn.batch_normalization(conv_out2, batch_mean, batch_var, shift, scale, epsilon)
print (BN_out)
relu_BN_maps2 = tf.nn.relu(BN_out)max_pool2 = tf.nn.max_pool(relu_BN_maps2,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME')print (max_pool2)
max_pool2_flat = tf.reshape(max_pool2, [-1, 2*2*5])# 全连接层
fc_w1 = tf.Variable(tf.random_normal([2*2*5,50]))
fc_b1 =  tf.Variable(tf.random_normal([50]))
fc_out1 = tf.nn.relu(tf.matmul(max_pool2_flat, fc_w1) + fc_b1)# 输出层
out_w1 = tf.Variable(tf.random_normal([50,10]))
out_b1 = tf.Variable(tf.random_normal([10]))
pred = tf.nn.softmax(tf.matmul(fc_out1,out_w1)+out_b1)loss = -tf.reduce_mean(tf_Y*tf.log(tf.clip_by_value(pred,1e-11,1.0)))train_step = tf.train.AdamOptimizer(1e-3).minimize(loss)y_pred = tf.arg_max(pred,1)
bool_pred = tf.equal(tf.arg_max(tf_Y,1),y_pred)
accuracy = tf.reduce_mean(tf.cast(bool_pred,tf.float32)) # 准确率with tf.Session() as sess:sess.run(tf.global_variables_initializer())for epoch in range(1000): # 迭代1000个周期for batch_xs,batch_ys in generatebatch(X,Y,Y.shape[0],batch_size): # 每个周期进行MBGD算法sess.run(train_step,feed_dict={tf_X:batch_xs,tf_Y:batch_ys})if(epoch%100==0):res = sess.run(accuracy,feed_dict={tf_X:X,tf_Y:Y})print (epoch,res)res_ypred = y_pred.eval(feed_dict={tf_X:X,tf_Y:Y}).flatten() # 只能预测一批样本,不能预测一个样本print (res_ypred)
from sklearn.metrics import  accuracy_scoreprint accuracy_score(Y_data,res_ypred.reshape(-1,1))

CNN 卷积神经网络TensorFlow简单实现相关推荐

  1. CNN卷积神经网络:花卉分类

    文章目录 简介 一.CNN卷积神经网络基础知识 二.数据集介绍 三.代码实现 读取数据 数据处理 搭建网络 训练网络 测试网络 保存网络 结果展示 总结 简介 本篇文章利用pytorch搭建CNN卷积 ...

  2. TensorFlow 2.0 mnist手写数字识别(CNN卷积神经网络)

    TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) 源代码/数据集已上传到 Github - tensorflow-tutorial-samples 大白话讲解卷积 ...

  3. 人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)

    深度学习算法及应用 一. 实验目的 二. 实验要求 三. 实验的硬件.软件平台 四. 实验原理 1.1. 深度学习概述 1.2. 深度学习的常见结构 1.3. 卷积神经网络(CNN) **卷积** * ...

  4. CNN卷积神经网络—LeNet原理以及tensorflow实现mnist手写体训练

    CNN卷积神经网络-LeNet原理以及tensorflow实现minst手写体训练 1. LeNet原理 2.tensorflow实现Mnist手写体识别 1.安装tensorflow 2.代码实现手 ...

  5. TensorFlow CNN卷积神经网络实现工况图分类识别(一)

    1. Tensorflow知识点 1.1. 张量 在Tensorflow程序中,所有的数据都是通过张量的形式来表示.从功能的角度上看,张量可以简单的理解为多维数组. (1)占位符Placeholder ...

  6. 深度学习--TensorFlow(项目)识别自己的手写数字(基于CNN卷积神经网络)

    目录 基础理论 一.训练CNN卷积神经网络 1.载入数据 2.改变数据维度 3.归一化 4.独热编码 5.搭建CNN卷积神经网络 5-1.第一层:第一个卷积层 5-2.第二层:第二个卷积层 5-3.扁 ...

  7. Tensorflow使用CNN卷积神经网络以及RNN(Lstm、Gru)循环神经网络进行中文文本分类

    Tensorflow使用CNN卷积神经网络以及RNN(Lstm.Gru)循环神经网络进行中文文本分类 本案例采用清华大学NLP组提供的THUCNews新闻文本分类数据集的一个子集进行训练和测试http ...

  8. CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用

    CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用 目录 基于tensorflow框架采用CNN(改进 ...

  9. CNN卷积神经网络简单示例(PyTorch)

    CNN卷积神经网络示例PyTorch 导入Python库和相关模块 转换为图像格式 将数据格式numpy转换为tensor,并打包成batch 构建CNN网络 定义损失函数 训练网络 显示学习曲线 进 ...

最新文章

  1. 24张GIF图,让你秒懂非标自动化机构的原理
  2. SQL 基礎語句-case
  3. IntelliJ IDEA使用(二):tomcat和jetty配置(转自:http://www.cnblogs.com/jenkinschan/p/6052948.html)
  4. SAP Spartacus Header区域的渲染逻辑
  5. 斑能不能彻底去掉_海鲜不能和什么一起吃
  6. java添加组件不显示不出来_java – jScrollPane无法添加组件
  7. PyQt之按钮传递鼠标按下事件点击失效
  8. IntelliJ IDEA 无法导入HttpServlet包解决方法
  9. 【CarMaker学习笔记】行人穿过人行道、横穿马路观察自动驾驶车辆避让实验
  10. Java—网络编程相关概念
  11. pdca管理循环基本主张_“PDCA”循环中的物业质量管理
  12. PUN ☀️九、玩家网络实例化与昵称显示
  13. STM32F103_study62_The punctual atoms(Clock system initialization function analysis)
  14. vendor php,使用php composer时, 如何优雅修改vendor中第三方代码
  15. Python入门基础篇 No.26 —— 列表_复制列表_排序_revered逆序_max_min_sum
  16. 科学计算机已知角度和边长怎样算斜长,计算公式
  17. LaTeX如何输出反斜杠 \
  18. 区块链在金融行业有哪些应用
  19. 圆柱体的投影特点_圆柱体三面投影作图方法分析
  20. python pdf 加水印_Python中通过PyPDF2实现PDF添加水印

热门文章

  1. Apache Flink 官方文档--概览
  2. XPath 使用那些事
  3. Java基于自定义注解的面向切面的实现
  4. Spring基于 Annotation 的简单介绍
  5. Python基础(list和tuple)可变集合和‘不可变’集合
  6. linux 命令行编辑常用快捷键
  7. Python之路【第一篇】:Python基础(2)
  8. 【BZOJ】1031: [JSOI2007]字符加密Cipher(后缀数组)
  9. jquery技巧(持续更新。。)
  10. Apache Traffic Server处理请求的过程