如何使用TensorFlow创建CNN
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍"如何使用TensorFlow创建CNN",在日常操作中,相信很多人在如何使用TensorFlow创建CNN问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2025年12月03日如何使用TensorFlow创建CNN
这篇文章主要介绍"如何使用TensorFlow创建CNN",在日常操作中,相信很多人在如何使用TensorFlow创建CNN问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用TensorFlow创建CNN"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
使用TensorFlow创建CNN
# -*- coding:utf-8 -*-import tensorflow as tfimport numpy as np# 下载mnist数据集from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('./mnist_data/', one_hot=True)# from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets## mnist = read_data_sets('./mnist_data/', one_hot=True)n_output_layer = 10# 定义待训练的神经网络def convolutional_neural_network(data): weights = {'w_conv1': tf.Variable(tf.random_normal([5, 5, 1, 32])), 'w_conv2': tf.Variable(tf.random_normal([5, 5, 32, 64])), 'w_fc': tf.Variable(tf.random_normal([7 * 7 * 64, 1024])), 'out': tf.Variable(tf.random_normal([1024, n_output_layer]))} biases = {'b_conv1': tf.Variable(tf.random_normal([32])), 'b_conv2': tf.Variable(tf.random_normal([64])), 'b_fc': tf.Variable(tf.random_normal([1024])), 'out': tf.Variable(tf.random_normal([n_output_layer]))} data = tf.reshape(data, [-1, 28, 28, 1]) conv1 = tf.nn.relu( tf.add(tf.nn.conv2d(data, weights['w_conv1'], strides=[1, 1, 1, 1], padding='SAME'), biases['b_conv1'])) conv1 = tf.nn.max_pool(conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') conv2 = tf.nn.relu( tf.add(tf.nn.conv2d(conv1, weights['w_conv2'], strides=[1, 1, 1, 1], padding='SAME'), biases['b_conv2'])) conv2 = tf.nn.max_pool(conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') fc = tf.reshape(conv2, [-1, 7 * 7 * 64]) fc = tf.nn.relu(tf.add(tf.matmul(fc, weights['w_fc']), biases['b_fc'])) # dropout剔除一些"神经元" # fc = tf.nn.dropout(fc, 0.8) output = tf.add(tf.matmul(fc, weights['out']), biases['out']) return output# 每次使用100条数据进行训练batch_size = 100X = tf.placeholder('float', [None, 28 * 28])Y = tf.placeholder('float')# 使用数据训练神经网络def train_neural_network(X, Y): predict = convolutional_neural_network(X) # cost_func = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=predict,labels=Y)) cost_func = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=predict, labels=Y)) optimizer = tf.train.AdamOptimizer().minimize(cost_func) # learning rate 默认 0.001 epochs = 1 with tf.Session() as session: # session.run(tf.initialize_all_variables()) session.run(tf.global_variables_initializer()) epoch_loss = 0 for epoch in range(epochs): for i in range(int(mnist.train.num_examples / batch_size)): x, y = mnist.train.next_batch(batch_size) _, c = session.run([optimizer, cost_func], feed_dict={X: x, Y: y}) epoch_loss += c print(epoch, ' : ', epoch_loss) correct = tf.equal(tf.argmax(predict, 1), tf.argmax(Y, 1)) accuracy = tf.reduce_mean(tf.cast(correct, 'float')) print('准确率: ', accuracy.eval({X: mnist.test.images, Y: mnist.test.labels}))train_neural_network(X, Y)执行结果:
准确率: 0.9789
tflearn
下面使用tflearn重写上面代码,tflearn是TensorFlow的高级封装,类似Keras。
tflearn提供了更简单、直观的接口。和scikit-learn差不多,代码如下:
# -*- coding:utf-8 -*-import tflearnfrom tflearn.layers.conv import conv_2d, max_pool_2dfrom tflearn.layers.core import input_data, dropout, fully_connectedfrom tflearn.layers.estimator import regressiontrain_x, train_y, test_x, test_y = tflearn.datasets.mnist.load_data( data_dir="./mnist_data/",one_hot=True)train_x = train_x.reshape(-1, 28, 28, 1)test_x = test_x.reshape(-1, 28, 28, 1)# 定义神经网络模型conv_net = input_data(shape=[None, 28, 28, 1], name='input')conv_net = conv_2d(conv_net, 32, 2, activation='relu')conv_net = max_pool_2d(conv_net, 2)conv_net = conv_2d(conv_net, 64, 2, activation='relu')conv_net = max_pool_2d(conv_net, 2)conv_net = fully_connected(conv_net, 1024, activation='relu')conv_net = dropout(conv_net, 0.8)conv_net = fully_connected(conv_net, 10, activation='softmax')conv_net = regression(conv_net, optimizer='adam', loss='categorical_crossentropy', name='output')model = tflearn.DNN(conv_net)# 训练model.fit({'input': train_x}, {'output': train_y}, n_epoch=13, validation_set=({'input': test_x}, {'output': test_y}), snapshot_step=300, show_metric=True, run_id='mnist')model.save('./mnist.model') # 保存模型"""model.load('mnist.model') # 加载模型model.predict([test_x[1]]) # 预测"""到此,关于"如何使用TensorFlow创建CNN"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
神经
学习
训练
数据
模型
神经网络
网络
代码
准确率
更多
utf-8
帮助
实用
高级
直观
差不多
接下来
接口
文章
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全周会议日期
互联网科技图
网络安全审计系统排名
简约互联网网络安全宣传周海报
专科有网络安全
基本的工程化软件开发时间
哪些数据库支持join
网络安全审查结果 滴滴
学校网络安全信息化
播放器代码软件开发
新建数据库排列顺序
随州软件开发多少钱
久米网络技术有限公司
网络安全模式 声音
华为云服务器企业认证
初中生网络安全知识有奖竞赛总结
互联网科技和工业革命
固定资产启用日期数据库
河南省教育系统网络安全
通用网络技术咨询口碑推荐
修改数据库为GBK码
商店数据库设计表
网络安全swot分析
营口互助盘软件开发多少钱
电脑如何解决网络安全问题
用友软件开发操作流程
sqlite数据库官方下载
手机万方数据库免费账号
金蝶自带的数据库名称是什么
网络安全50字 心得