TensorFlow 是一个基于 python 的机械进修框架。在 Coursera 上进修了逻辑回归的课程内容后,想把在 MATLAB 中实现了的内容用 TensorFlow 从新实现一遍,当做进修 Python 和框架的敲门砖。
目标读者
知道逻辑回归是什么,懂一点 Python,据说过 TensorFlow
数据集
来自 Coursera 上 Andrew 的机械进修课程中的ex2data1.txt,根据学生的两次测验成就断定钙揭捉?生是否会被登科。
情况
Python 2.7 - 3.x
pandas, matplotlib, numpy
安装 TensorFlow
在本身的电脑上安装 TensorFlow 框架,安装办法过程不赘述,CPU 版相对更轻易一点,GPU 版须要 CUDA 支撑,各位看官看情况安装就好。
开端
创建一个文件夹(比如就叫做tensorflow),在文件夹中创建一个 Python 文件main.py,并将数据集文件放到这个文件夹下:
数据情势:

前两列分别为两次测验成就(x1, x2),最后一列为是否被登科(y),1代表被登科,0则反之。
在源文件main.py中,我们起首惹人须要的包:
接着我们将数据集文件读入法度榜样,用于后面的练习:
pandas函数read_csv可以将 csv(comma-separated values)文件中的数据读入df变量,经由过程df.values将 DataFrame 转化为二维数组:
W 和 b 是我们接下来的进修目标,W 为权值矩阵(Weights),b 为偏置量(Bias,表如今图像上又叫截距)。

有了数据之后,我们须要将特点(x1, x2)和标签(y)分别放到两个变量中,以便在练习中代入公式:
# 分别特点和标签,并获取数据维数train_X = train_data[:, :-1]train_y = train_data[:, -1:]feature_num = len(train_X[0])sample_num = len(train_X)print("Size of train_X: {}x{}".format(sample_num, feature_num))print("Size of train_y: {}x{}".format(len(train_y), len(train_y[0])))import pandas as pd # 用于攫取数据文件import tensorflow as tfimport matplotlib.pyplot as plt # 用于画图import numpy as np # 用于后续计算

可以看到,我们的数据集中有100条样例,每条样例的特点数量为2。
TensorFlow 模型设计
在逻辑回归中,我们应用的猜测函数(Hypothesis)为:
个中,sigmoid是一个激活函数,在这里表示学生被登科的概率:
这个函数的外形请自行百度
我们应用的损掉函数为:
因为我们的数据集只有两个特点,是以不消担心过拟合,所以损掉函数里的┞俘规化项就不要了😌。
起首我们用 TensorFlow 定义两个变量用来存放我们的练习用数据:
# 数据集X = tf.placeholder(tf.float32)y = tf.placeholder(tf.float32)
这里的X和y不是一般的变量,而是一个 placeholder(占位符),意味着这两个变量的值是未指定的,直到你开端练习模型时才须要将给定的数据赋值给变量。
接着我们再定义出我们要练习的 W 和 b:
# 练习目标W = tf.Variable(tf.zeros([feature_num, 1]))b = tf.Variable([-.9])
接下来我们要用 TensorFlow 的方法将损掉函数表达出来:

db = tf.matmul(X, tf.reshape(W, [-1, 1])) + bhyp = tf.sigmoid(db)cost0 = y * tf.log(hyp)cost1 = (1 - y) * tf.log(1 - hyp)cost = (cost0 + cost1) / -sample_numloss = tf.reduce_sum(cost)
可以看到,我表达损掉函数是分三步进行的:先分别将乞降内的两部分表示出来,再将它们加和并和外面的常数m进交运算,最后对这个向量进行乞降,便获得了损掉函数的值。
接下来,我们要定义应用的优化办法:
个中,第一步是拔取优化器,这里我们选择梯度降低办法;第二步是优化目标,大年夜函数名字顾名思义,我们的优化目标是使得损掉函数的值最小化。
留意:此处的进修率(0.001)应当尽可能小,不然可能会出现损掉计算中出现 log(0)的问题。
练习
膳绫擎的工作做完之后,我们就可以开端练习我们的模型了。
在 TensorFlow 中,起重要将之前定义的Variable初始化:
init = tf.global_variables_initializer()sess = tf.Session()sess.run(init)
在这里,我们看到出现了一个tf.Session(),顾名思义是会话,即义务履行的主体。我们膳绫擎定义了一堆器械,只是一个模型为了获得结不雅而须要的履行步调和框架,一个类似流程图的器械,光有流程图还不敷,我们须要一个主体来实际地运行它,这就是Session的感化。
推荐阅读
欲望本文能帮你回想你已经知道的那些常识。如不雅图片讲解的不敷清楚,你可能须要浏览具体的文┞仿或者进行搜刮。1. String对象弗成改变的特点(详情请点击膳绫擎的标题查看)String s = "ab>>>详细阅读
本文标题:从零开始使用TensorFlow建立简单的逻辑回归模型
地址:http://www.17bianji.com/lsqh/35964.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示