1. tf.matmul(X, w) # 进行点乘操作

参数说明:X,w都表示输入的数据,

2.tf.equal(x, y) # 比较两个数据对应位置的数是否相等,返回值为True,或者False

参数说明:x,y表示需要比较的两组数

3.tf.cast(y, 'float') # 将布尔类型转换为数字类型

参数说明:y表示输入的数据,‘float’表示转换的数据类型

4.tf.argmax(y, 1) # 返回每一行的最大值的索引

参数说明:y表示输入数据,1表示每一行的最大值的索引,0表示每一列最大值得索引

5.tf.nn.softmax(y) # 对每一行数据,按照softmax方式,计算其概率值

参数说明:y表示输入的数据

6.tf.train.GradientDescentOptimizer(0.05).minimize(loss) # 对损失值采用梯度下降的方法进行降低操作

参数说明:0.05表示学习率的大小,loss表示损失值

代码说明:相较于上一个线性拟合的代码,逻辑回归的代码,使用了tf.placeholder()进行数据输入的占位,

预测结果等价于tf.matmul(X, w) + b,作为预测结果

代码:

第一步:载入mnist数据集

第二步:超参数的设置,包括输入样本的维度,分类的类别数,一个batch的大小,以及迭代的次数

第三步:使用tf.placeholder() 构造X特征和y标签

第四步:使用tf.Variable(tf.random_normal([inputSize, num_classes]))构造W和b

第五步:使用tf.matmul获得预测得分值,使用tf.nn.softmax() 将得分值转换为概率值

第六步:使用L2损失值,即均分误差作为损失值

第七步:使用tf.train.GradientDescentOptimizer(learning_rate=0.05).minimize(loss), 对损失值进行梯度下降

第八步:使用tf.equal(tf.argmax(y_pred), tf.argmax(y)) 获得两个标签的最大值索引是否一致,再使用tf.reduce_mean(tf.cast()) 计算准确率

第九步:循环,使用mnist.train.next_batch进行训练数据的部分数据的读取

第十步:sess.run([optm, loss], feed_dict={X:batch[0], y:batch[1]}) # 执行损失值和梯度下降降低损失值,从而更新参数

第十一步:每迭代1000次,打印部分数据的准确率

第十二步:打印测试数据部分的准确率

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.examples.tutorials.mnist import input_data # 第一步:mnist数据集的载入
mnist = input_data.read_data_sets('/data', one_hot=True) # 第二步:初始超参数的设置
# 输入层的维度
inputSize = 784
# 分类的类别数
num_classes = 10
# 每一次参数更新的batchSize
batch_size = 64
# 循环的次数
trainIteration = 50000 # 第三步:输入数据初始化操作, 进行一个占位操作
# X的维度为[-1, inputSize]
X = tf.placeholder(tf.float32, [None, inputSize])
# y的维度为[-1, num_classes]
y = tf.placeholder(tf.float32, [None, num_classes])
# 第四步:变量的初始化操作
# W1进行正态参数初始化,维度为[inputSize, num_classes]
W1 = tf.Variable(tf.random_normal([inputSize, num_classes], stddev=0.1))
# b1进行全零初始化,维度为[num_classes]
b1 = tf.Variable(tf.zeros([num_classes]))
# 第五步:使用tf.matmul进行预测操作, 使用softmax计算概率值,扩大类别差距
y_pred = tf.nn.softmax(tf.matmul(X, W1) + b1)
# 第六步:使用L2 loss计算损失值, tf.reduce_mean求出所有的损失值的平均值
loss = tf.reduce_mean(tf.square(y-y_pred))
# 第七步:使用梯度下降法,对loss进行降低
opt = tf.train.GradientDescentOptimizer(learning_rate=0.05).minimize(loss)
# 第八步:判断预测结果的最大值和真实值之间是否相等,使用True和False表示
correct_pred = tf.equal(tf.argmax(y_pred, 1), tf.argmax(y, 1))
# 使用tf.cast将布尔类型转换为float类型,使用reduce_mean求平均值
accr = tf.reduce_mean(tf.cast(correct_pred, 'float'))
# 变量初始化
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init) for i in range(trainIteration):
# 第九步:使用mnist.train.next_batch 获得一个batch的数据
bacth = mnist.train.next_batch(batch_size)
# 第十步:使用sess.run执行梯度下降和loss操作,输入的参数为batch_X和batch_y数据
_, loss = sess.run([opt, loss], feed_dict={X:bacth[0], y:bacth[1]})
# 第十一步:如果迭代1000次,打印当前训练数据的准确率
if i % 1000 == 0:
print('train accr %g'%(sess.run(accr, feed_dict={X:bacth[0], y:bacth[1]})))
# 第十二步:打印测试数据的batch_size的准确率
batch = mnist.test.next_batch(batch_size)
print('test accr %g'%(sess.run(accr, feed_dict={X: batch[0], y: batch[1]})))

深度学习原理与框架-Tensorflow基本操作-mnist数据集的逻辑回归 1.tf.matmul(点乘操作) 2.tf.equal(对应位置是否相等) 3.tf.cast(将布尔类型转换为数值类型) 4.tf.argmax(返回最大值的索引) 5.tf.nn.softmax(计算softmax概率值) 6.tf.train.GradientDescentOptimizer(损失值梯度下降器)的更多相关文章

  1. 深度学习原理与框架-Tensorflow基本操作-变量常用操作 1.tf.random_normal(生成正态分布随机数) 2.tf.random_shuffle(进行洗牌操作) 3. tf.assign(赋值操作) 4.tf.convert_to_tensor(转换为tensor类型) 5.tf.add(相加操作) tf.divide(相乘操作) 6.tf.placeholder(输入数据占位

    1. 使用tf.random_normal([2, 3], mean=-1, stddev=4) 创建一个正态分布的随机数 参数说明:[2, 3]表示随机数的维度,mean表示平均值,stddev表示 ...

  2. 深度学习原理与框架-Tensorflow基本操作-实现线性拟合

    代码:使用tensorflow进行数据点的线性拟合操作 第一步:使用np.random.normal生成正态分布的数据 第二步:将数据分为X_data 和 y_data 第三步:对参数W和b, 使用t ...

  3. 深度学习原理与框架-Tensorflow基本操作-Tensorflow中的变量

    1.tf.Variable([[1, 2]])  # 创建一个变量 参数说明:[[1, 2]] 表示输入的数据,为一行二列的数据 2.tf.global_variables_initializer() ...

  4. 深度学习原理与框架-Tensorflow卷积神经网络-cifar10图片分类(代码) 1.tf.nn.lrn(局部响应归一化操作) 2.random.sample(在列表中随机选值) 3.tf.one_hot(对标签进行one_hot编码)

    1.tf.nn.lrn(pool_h1, 4, bias=1.0, alpha=0.001/9.0, beta=0.75) # 局部响应归一化,使用相同位置的前后的filter进行响应归一化操作 参数 ...

  5. 深度学习原理与框架-Tensorflow卷积神经网络-卷积神经网络mnist分类 1.tf.nn.conv2d(卷积操作) 2.tf.nn.max_pool(最大池化操作) 3.tf.nn.dropout(执行dropout操作) 4.tf.nn.softmax_cross_entropy_with_logits(交叉熵损失) 5.tf.truncated_normal(两个标准差内的正态分布)

    1. tf.nn.conv2d(x, w, strides=[1, 1, 1, 1], padding='SAME')  # 对数据进行卷积操作 参数说明:x表示输入数据,w表示卷积核, stride ...

  6. 深度学习原理与框架-Tensorflow卷积神经网络-神经网络mnist分类

    使用tensorflow构造神经网络用来进行mnist数据集的分类 相比与上一节讲到的逻辑回归,神经网络比逻辑回归多了隐藏层,同时在每一个线性变化后添加了relu作为激活函数, 神经网络使用的损失值为 ...

  7. 深度学习原理与框架-Alexnet(迁移学习代码) 1.sys.argv[1:](控制台输入的参数获取第二个参数开始) 2.tf.split(对数据进行切分操作) 3.tf.concat(对数据进行合并操作) 4.tf.variable_scope(指定w的使用范围) 5.tf.get_variable(构造和获得参数) 6.np.load(加载.npy文件)

    1. sys.argv[1:]  # 在控制台进行参数的输入时,只使用第二个参数以后的数据 参数说明:控制台的输入:python test.py what, 使用sys.argv[1:],那么将获得w ...

  8. 深度学习原理与框架-递归神经网络-时间序列预测(代码) 1.csv.reader(进行csv文件的读取) 2.X.tolist(将数据转换为列表类型)

    1. csv.reader(csvfile) # 进行csv文件的读取操作 参数说明:csvfile表示已经有with oepn 打开的文件 2. X.tolist() 将数据转换为列表类型 参数说明 ...

  9. 深度学习原理与框架-猫狗图像识别-卷积神经网络(代码) 1.cv2.resize(图片压缩) 2..get_shape()[1:4].num_elements(获得最后三维度之和) 3.saver.save(训练参数的保存) 4.tf.train.import_meta_graph(加载模型结构) 5.saver.restore(训练参数载入)

    1.cv2.resize(image, (image_size, image_size), 0, 0, cv2.INTER_LINEAR) 参数说明:image表示输入图片,image_size表示变 ...

随机推荐

  1. 跨域问题及jQuery中Ajax传参的讲解

    1.跨域:不再同一服务器下,就是协议,域名,端口,有一个不一样: 浏览器对于javascript的同源策略的限制: 案例: 以 http://172.164.23:8088/ 为例 相同域名:172. ...

  2. IRQL Ring0实现

    一,IRQL的定义Interrupt ReQuest Level     DDK对IRQL的定义是:中断请求级(IRQL)标示中断的优先级.处理器在一个IRQL上执行线程代码,IRQL是帮助决定线程如 ...

  3. centos6.5远程桌面连接(VNC\SPice)

    在Linux下用vnc远程桌面,centos中默认没有安装VNC 查询系统是否安装VNC # rpm -q tigervnc tigervnc-server 安装VNC服务 # yum install ...

  4. mysql为什么要分库分表?

    1 基本思想之什么是分库分表?从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上. 2 基本思想之为什么要分库分表? 单表操作数据量有最优值, ...

  5. UI相关教程:HUD、UMG和Widget

    转自:http://aigo.iteye.com/blog/2258612 蓝图脚本来处理 ================================================== 用UM ...

  6. cocos源码分析--绘制顺序LocalZOrder、GlobalZOrder、OrderOfArrival

    使用规则 节点的渲染顺序跟节点的三个成员变量有关(_localZOrder._globalZOrder._orderOfArrival)分别对应三个设置函数setLocalZOrder.setGlob ...

  7. Linux TCP/IP调优-Linux内核参数注释

    固定文件的内核参数 下列文件所在目录: /proc/sys/net/ipv4/ 名称 默认值 建议值 描述 tcpsyn_retries 5 1 对于一个新建连接,内核要发送多少个SYN连接请求才决定 ...

  8. virt-install详解

    man virt-install VIRT-INSTALL() Virtual Machine Manager VIRT-INSTALL() NAME virt-install - provision ...

  9. String.prototype.normalize()

    normalize() 方法会按照指定的一种 Unicode 正规形式将当前字符串正规化. 这是一个ES6方法. 许多欧洲语言有语调符号和重音符号.为了表示它们,Unicode 提供了两种方法.一种是 ...

  10. Oracle:Authid Current_User的使用

    我们知道,用户拥有的role权限在存储过程是不可用的.遇到这种情况,我们一般需要显式授权,如grant create table to usera;但这种方法太麻烦,有时候可能需要进行非常多的授权才能 ...