###CNN###import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data'''这些是tf1.*版本,现在我已经升级到2.0版本,上方数据集都用不了了...''''''黑白图片,因此这里使用的是2D'''mnist=input_data.read_data_sets("MNIST_data",one_hot=True)batch_size=100
n_batch=mnist.train.num_examples//batch_sizetf=tf.compat.v1#初始化权值(这样初始化真的很重要)
def weight_variable(shape):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)#卷积层
def conv2d(x,W):#x:输入 【batch,in_height,in_width,in_channels(通道数)】#W:滤波器#strides:步长#padding:个人选择:SAME/VALIDreturn tf.nn.conv2d(x,W,strides=[1,1,1,1],padding="SAME")#池化层
def max_pool_2x2(x):#ksize=[1 x y 1] #步长2return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME')#用max_pool2d也是可以的

x=tf.placeholder(tf.float32,[None,784])
y=tf.placeholder(tf.float32,[None,10])#改变x的格式转为4D的向量[batch,in_height,in_width,in_channels]
x_image=tf.reshape(x,[-1,28,28,1])#-1还是那个意思,就是输入的个数不确定,让它自行计算是多少#初始化第一个卷积层的权值和偏置
W_conv1=weight_variable([5,5,1,32])#5*5采样窗口,32个卷积核从1个平面抽取特征(从一个平面提取32个特征平面)【就是生成1D的32个卷积核,分别进行卷积,从而1个平面得到32个卷积特征平面】
b_conv1=bias_variable([32])#给这个卷积核设置一个偏置值#把x_image和权值向量进行卷积,再加上偏置值,然后应用relu激活函数
h_cov1=tf.nn.relu(conv2d(x_image,W_conv1)+b_conv1)#利用平面(2D)卷积进行卷积,并加一个偏置,得到批次*32个平面的
h_pool1=max_pool_2x2(h_cov1)#进行max-pooling#初始化第二个卷积层的权值和偏置
W_conv2=weight_variable([5,5,32,64])#5*5采样窗口,64个卷积核从32个平面抽取特征(从32个平面提取64个特征平面)【生成32D的64个卷积核,分别进行卷积,从而得到1个包含64个卷积平面】
b_conv2=bias_variable([64])#么个卷积核设置一个偏置值#把h_pool1和权值向量进行卷积,再加上偏置值,然后应用relu激活函数
h_cov2=tf.nn.relu(conv2d(h_pool1,W_conv2)+b_conv2)
h_pool2=max_pool_2x2(h_cov2)#进行max-pooling#28*28的图片第一次卷积后还是28*28,第一次初花后变成14*14
#第二次卷积后14*14,第二次池化后变成7*7
#上方操作完后的得到64张7*7的平面'''下方就是正常的神经网络(全连接)'''#初始化第一个全连接层的权值
W_fc1=weight_variable([7*7*64,1024])#上一层有7*7*64个神经元,全连接层有1024个神经元
b_cf1=bias_variable([1,1024])#将池化层2的输出扁平化为1维
h_pool2_flat=tf.reshape(h_pool2,[-1,7*7*64])#100,7*7*64
#求第一个全连接层的输出
h_fc1=tf.nn.relu(tf.matmul(h_pool2_flat,W_fc1)+b_cf1)#keep_prob用来表示神经元的输出概率
keep_prob=tf.placeholder(tf.float32)
h_fc1_drop=tf.nn.dropout(h_fc1,keep_prob)#初始化第二个全连接层
W_fc2=weight_variable([1024,10])
b_cf2=bias_variable([1,10])#计算输出
prediction=tf.nn.softmax(tf.matmul(h_fc1_drop,W_fc2)+b_cf2)#交叉熵代价函数
cross_entropy=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction))
#优化器
train_step=tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)#结果存放在一个布尔列表中
correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))acc=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))with tf.Session() as sess:sess.run(tf.global_variables_initializer())for i in range(21):for batch in range(n_batch):batch_x,batch_y=mnist.train.next_batch(batch_size)sess.run(train_step,feed_dict={x:batch_x,y:batch_y,keep_prob:0.7})accuracy=sess.run(acc,feed_dict={x:mnist.test.images,y:mnist.test.labels,keep_prob:1.0})print("第"+str(i+1)+"次迭代准确率为:"+str(accuracy))

###RNN###import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_datamnist=input_data.read_data_sets("MNIST_data",one_hot=True)tf=tf.compat.v1#输入图片是28*28
n_input=28#输入一行,一行有28个数据
max_time=28#一共28行
lstm_size=100#隐藏单元
n_classes=10#10个分类
batch_size=50#m每个批次50个样本
n_batch=mnist.train.num_examples//batch_size#一共有多少个批次

x=tf.placeholder(tf.float32,[None,784])
y=tf.placeholder(tf.float32,[None,10])'''下方权重是隐藏层和输出层之间的权重和偏置'''
#初始化权值
weights=tf.Variable(tf.truncated_normal([lstm_size,n_classes],stddev=0.1))
#初始化偏置值
biases=tf.Variable(tf.constant(0.1,shape=[1,n_classes]))#定义RNN网络
def RNN(x,weights,biases):#inputs=[batch_size,max_time,n_input]>>[batch_size,in_height,in_width]inputs=tf.reshape(x,[-1,max_time,n_input])#定义LSTM基本CELLlstm_Cell=tf.nn.rnn_cell.BasicLSTMCell(lstm_size)#每个隐藏层中都会有一个cell#final_state[0]是cell_state#final_state[1]是hidden_state  由34行可见该形状为 ?*100(隐藏单元个数) 由返回值prediction可知results它与y形状相同(50,10)  所以他的形状为50(batch_size)*100(隐藏单元个数)outputs,final_state=tf.nn.dynamic_rnn(lstm_Cell,inputs,dtype=tf.float32)results=tf.nn.softmax(tf.matmul(final_state[1],weights)+biases)#经过softmax转化为概率显示return results#计算RNN返回结果
prediction=RNN(x,weights,biases)
#损失函数
cross_entropy=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction,labels=y))
#使用Adam优化器
train_step=tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)for i in range(21):for j in range(n_batch):batch_x,batch_y=mnist.train.next_batch(batch_size)sess.run(train_step,feed_dict={x:batch_x,y:batch_y})acc=sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})print("第"+str(i+1)+"次迭代准确率为:"+str(acc))

转载于:https://www.cnblogs.com/ningxinjie/p/11412665.html

CNN/RNN TF1.4相关推荐

  1. 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

    https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类 ...

  2. DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—训练过程

    DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别-训练过程 目录 输出结果 设计思路 核心代码 输出结果 ...

  3. DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—预测过程

    DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别-预测过程 目录 输出结果 设计思路 核心代码 输出结果 ...

  4. slim 搭建rnn_使用Keras搭建cnn+rnn, BRNN,DRNN等模型

    Keras api 提前知道: Normalize the activations of the previous layer at each batch, i.e. applies a transf ...

  5. 进一步认识Deepchem的分子特征化: 将化学分子结构作为到随机森林\CNN\RNN\GNN等机器学习模型输入的三种方法

    '''by wufeil进一步认识分子特征化:将化学分子结构作为到随机森林\CNN\RNN\GNN等机器学习模型的输入如何将一个分子SMile表示的分子输入到机器学习/深度学习中呢?例如:CH3CH3 ...

  6. CNN/RNN在NLP领域的对比

    目录 1 RNN 1.1 Why hot? 1.2 RNN存在的问题 1.3 如何改造RNN并行计算能力 2 CNN 2.1 CNN存在的问题 2.2 解决方法 本篇主要总结下张俊林大神关于放弃幻想, ...

  7. (论文加源码)基于DEAP的脑电情绪识别(CNN,RNN和两种不同的注意力机制)

    论文及源码见个人主页:https://download.csdn.net/download/qq_45874683/85063985 (论文加源码)基于DEAP的脑电情绪识别(CNN,RNN和两种不同 ...

  8. CNN与RNN对比 CNN+RNN组合方式

    CNN和RNN几乎占据着深度学习的半壁江山,所以本文将着重讲解CNN+RNN的对比,以及各种组合方式. 一.CNN与RNN对比 1. CNN卷积神经网络与RNN递归神经网络直观图 2. 相同点: 传统 ...

  9. 多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU)

    多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU 1.CNN模型 1.1 代码 1.2 运行结果 2.RNN模型 2 ...

最新文章

  1. github 创建密匙失败
  2. 【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
  3. linux进入文件夹命令,如何在 Linux 中不使用 CD 命令进入目录/文件夹?
  4. node.js发送邮件
  5. 解决方案:the program can't start because mspdb100.dll is missing from your computer
  6. netty系列之:自定义编码解码器
  7. 在Extjs中动态增加控件
  8. java策略文件_[讨论]java类文件保护策略
  9. Python+Selenium自动化测试:Page Object模式
  10. Spring的Bean属性依赖注入
  11. Head First 设计模式 --4 工厂模式 抽象工厂模式
  12. MVC中单选按钮的实现
  13. 利用OA系统更便捷地查询员工工资
  14. 从pdf提取图片,有两个库可以提取fitz(要install pymupdf)、pdfminer(install pdfminer3k)
  15. 使用示波器测量运放带宽和压摆率
  16. HCIA-IoT 个人学习总结 Day2
  17. Thermal engine 解析
  18. [点评] [电子科技大学][TCP/IP协议原理][杨宁]
  19. ACM里的期望和概率问题 从入门到精(入)通(土)
  20. 为痉挛性斜颈的患者敲响警钟,必看文章!

热门文章

  1. 服务器角色与数据库角色
  2. 萧山职称计算机考试培训,浙江萧山2017年职称计算机考试时间安排
  3. 区别和联系_动机与主题的区别与联系
  4. 点云数据显示_vispy 显示 kitti 点云数据
  5. 2017计算机应用考研大纲,2017考研计算机大纲
  6. html一张图片用两种滤镜,HTML图片CSS滤镜—灰度效果
  7. mock模拟接口测试 vue_在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟...
  8. 折线图表android,Android 折线图表MPAndroidChart的实现
  9. rto净化效率计算公式_全面剖析 石油化工行业RTO蓄热式焚烧炉的优势要素
  10. linux idea 快捷键,Linux 下 IDEA 的 Ctrl+Alt+S