跟我学算法-tensorflow 实现logistics 回归
tensorflow每个变量封装了一个程序,需要通过sess.run 进行调用
接下来我们使用一下使用mnist数据,这是一个手写图像的数据,训练集是55000*28*28, 测试集10000* 28*28
第一步:导入数据
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.examples.tutorials.mnist import input_data
# 导入数据
mnist = input_data.read_data_sets('data/', one_hot=True) print (" tpye of 'mnist' is %s" % (type(mnist)))
print (" number of trian data is %d" % (mnist.train.num_examples))
print (" number of test data is %d" % (mnist.test.num_examples)) training = mnist.train.images
traininglable = mnist.train.labels
testing = mnist.test.images
testinglabel = mnist.test.labels
第二步:初识化变量
#初始化x和y
x = tf.placeholder('float', [None, 784])
y = tf.placeholder('float', [None, 10])
# 初始化W和b
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10])) sess = tf.Session()
第三步: 构造初始化函数
# 构造多分类方程
actv = tf.nn.softmax(tf.matmul(x, W) + b)
# 构造代价函数y*log(y1), y1表示的是预测值
cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(actv), reduction_indices=1))
#训练模型 learning_rate = 0.01
#优化模型,使得cost最小化
optm = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) # 预测结果的最大值索引与真实值的索引进行比对, tf.argmax( , 1) #找出一行中的最大值的索引
pred = tf.equal(tf.argmax(actv, 1), tf.argmax(y, 1))
# 计算正确率, tf.cast 把布尔值转换为数字形式
accr = tf.reduce_mean(tf.cast(pred, 'float'))
第四步:迭代优化参数
init = tf.global_variables_initializer() # 训练次数
train_epoches = 50
# 每次抽取样本数
batch_size = 100
# 每5次循环打印一次结果
display_step = 5
sess = tf.Session()
sess.run(init) for train_epoch in range(train_epoches):
avg_cost = 0
# 每次选取100个数据,循环的次数
num_batch = int(mnist.train.num_examples/batch_size)
for i in range(num_batch):
# 抽取数据
bacth_x, bacth_y = mnist.train.next_batch(batch_size)
# 进行cost优化
sess.run(optm, feed_dict={x:bacth_x, y:bacth_y})
# 加上cost的值
feeds = {x:bacth_x, y:bacth_y}
avg_cost += sess.run(cost, feed_dict=feeds)/num_batch
# 每5次打印一次结果
if train_epoch % display_step == 0:
feeds_train = {x:bacth_x, y:bacth_y}
feed_test = {x:mnist.test.images, y:mnist.test.labels}
# 计算训练集的准确率, feed_dict的参数
train_acc = sess.run(accr, feed_dict=feeds_train)
# 计算测试集的准确率
test_acc = sess.run(accr, feed_dict=feed_test)
print("Epoch: %03d/%03d cost: %.9f train_acc: %.3f test_acc: %.3f"
% (train_epoch, train_epoches, avg_cost, train_acc, test_acc))
跟我学算法-tensorflow 实现logistics 回归的更多相关文章
- 跟我学算法- tensorflow 实现RNN操作
对一张图片实现rnn操作,主要是通过先得到一个整体,然后进行切分,得到的最后input结果输出*_w[‘out’] + _b['out'] = 最终输出结果 第一步: 数据载入 import ten ...
- 跟我学算法- tensorflow VGG模型进行测试
我们使用的VGG模型是别人已经训练好的一个19层的参数所做的一个模型 第一步:定义卷积分部操作函数 mport scipy.io import numpy as np import os import ...
- 跟我学算法-tensorflow 实现卷积神经网络附带保存和读取
这里的话就不多说明了,因为上上一个博客已经说明了 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt ...
- 跟我学算法- tensorflow模型的保存与读取 tf.train.Saver()
save = tf.train.Saver() 通过save. save() 实现数据的加载 通过save.restore() 实现数据的导出 第一步: 数据的载入 import tensorflo ...
- 跟我学算法-tensorflow 实现卷积神经网络
我们采用的卷积神经网络是两层卷积层,两层池化层和两层全连接层 我们使用的数据是mnist数据,数据训练集的数据是50000*28*28*1 因为是黑白照片,所以通道数是1 第一次卷积采用64个filt ...
- 跟我学算法-tensorflow 实现神经网络
神经网络主要是存在一个前向传播的过程,我们的目的也是使得代价函数值最小化 采用的数据是minist数据,训练集为50000*28*28 测试集为10000*28*28 lable 为50000*10, ...
- 跟我学算法-tensorflow 实现线性拟合
TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算.借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU.GPU.TPU)和设备(桌面设备.服务器集群.移动设备.边缘设 ...
- 跟我学算法- tensorflow 卷积神经网络训练验证码
使用captcha.image.Image 生成随机验证码,随机生成的验证码为0到9的数字,验证码有4位数字组成,这是一个自己生成验证码,自己不断训练的模型 使用三层卷积层,三层池化层,二层全连接层来 ...
- logistics回归简单应用——梯度下降,梯度上升,牛顿算法(一)
警告:本文为小白入门学习笔记 由于之前写过详细的过程,所以接下来就简单描述,主要写实现中遇到的问题. 数据集是关于80人两门成绩来区分能否入学: 数据集: http://openclassroom.s ...
随机推荐
- OC中使用单例模式
static Config * instance = nil; +(Config *) Instance { @synchronized(self) { if(nil == instance) { [ ...
- 线性回归 Linear regression(2)线性回归梯度下降中学习率的讨论
这篇博客针对的AndrewNg在公开课中未讲到的,线性回归梯度下降的学习率进行讨论,并且结合例子讨论梯度下降初值的问题. 线性回归梯度下降中的学习率 上一篇博客中我们推导了线性回归,并且用梯度下降来求 ...
- Tornado的入门研究
1.为啥要了解Tornado 首先,Tornado是大神写出来的,如果学习python的话,参照Tornado的源码是一件非常好的事情,属于FaceBook的开源代码 其次,Tornado就是我们在 ...
- 使用RawComparator加速Hadoop程序
使用RawComparator加速Hadoop程序 在前面两篇文章[1][2]中我们介绍了Hadoop序列化的相关知识,包括Writable接口与Writable对象以及如何编写定制的Writable ...
- linux命令ls -l的total是怎么计算出来的?
自己手写实现ls -l命令纠结了很久的地方,刚才总算搞明白了.直接上代码重要部分 long nTotalBlocks = 0; DIR* dp = opendir(dirPathName); stru ...
- Netty--JDK序列化编解码传输对象
使用JDK序列化不需要额外的类库,只需要实现Serializable即可,但是序列化之后的码流只有Java才能反序列化,所以它不是跨语言的,另外由于Java序列化后码流比较大,效率也不高,所以在RPC ...
- 纯css实现点击事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- json用法常见错误
Json用法三个常见错误 net.sf.json.JSONException: java.lang.NoSuchMethodException
- 阿里云专有网络下一键安装RouterOS-ROS系统
1.阿里云环境centos6.9 x64: 内网网卡为eth0 阿里云的linux下硬盘名称为/dev/vda 注意阿里云的安全组建议开放任意协议和端口,任意IP允许访问 今天测试阿里云2C4G的死活 ...
- CentOS下j2ee环境搭建
转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/01/2994485.html 因为是做j2ee后台开发的,所以在Linux上搭建 ...