《Python机器学习及实践:从零开始通往Kaggle竞赛之路》第3章 进阶篇 学习笔记(十一)3.2.4Tensorflow框架总结

目录

3.2.4Tensorflow框架

1、背景

2、编程实践一

(1)输出一句话

(2)线性函数的计算

(3)“良/恶性乳腺癌肿瘤”预测

3、skflow

4、神经网络

5、编程实践二


3.2.4Tensorflow框架

1、背景

2015年10月5日,谷歌为TensorFlow提交了注册商标申请(登记编号:86778464),并这样描述它:

(1)用以编写程序的计算机软件;

(2)计算机软件开发工具;

(3)可应用于人工智能、深度学习、高性能计算、分布式计算、虚拟化和机器学习这些领域;

(4)软件库可应用于通用目的的计算、数据收集的操作、数据变换、输入输出、通信、图像显示、人工智能等领域的建模和测试;

(5)软件可用作应用于人工智能等领域的应用程序接口(API)。

2015年11月9日,Google宣布对Tensorflow开源。一时间,Tensorflow在GitHub上面的下载量跃升至全站第2位,可见全世界兴趣爱好者对这款开源软件的热情。现如今许多知名的IT企业,如Google、Facebook、Microsoft、Apple甚至国内的百度,无不在机器学习研究领域给予非常大的资金和人力的投入;但是,鲜有将内部使用的平台公之于众的。当然,虽然不认为Google这次的做法完全是一次“慈善捐助”,但是不管怎样这样的举措的确令人拍手叫好。

备注:Google在其将近20年的发展历程中,不乏这种“战略性”的论文发表甚至代码开源,从而对整个IT领域产生革命性影响的例子。其中包括:发表MapReduce这种分布式存储和计算框架的介绍论文,从而产生了Hadoop、Spark等;开源Android手机操作系统,几年之间雄霸移动端操作系统市场,与苹果公司的iOS一较高下,不知道这次公开Tensorflow这个曾在Google内部作为机器学习的系统框架,是否也意味着Google正在为今后的人工智能革命进行战略布局。换言之,如果有更多的数据科学家开始使用Tensorflow来从事机器学习方面的研究,冒昧预测,这将有利于Google对日益发展的机器学习行业拥有更多的主导权。

2、编程实践一

许多人开始以为Tensorflow只是一个用于深入学习研究的系统,其实不然。应该说,这是一个完整的编码框架。就如同按照Python编程语法设计程序一样,Tensorflow内部也有自己所定义的常量、变量、数据操作等要素。不同的是,Tensorflow使用图(Graph)来表示计算任务;并使用会话(Session)来执行图。

(1)输出一句话

使用显式会话输出一句话。

# 代码73:使用Tensorflow输出一句话
# 导入tensorflow工具包并重命名为tf。
import tensorflow as tf
# 导入numpy并重命名为np。
import numpy as np

# 初始化一个Tensorflow的常量:Hello Google Tensorflow!字符串,并命名为greeting作为一个计算模块。
greeting = tf.constant('Hello Google Tensorflow!')

# 启动一个会话。
sess = tf.Session()
# 使用会话执行greeting计算模块。
result = sess.run(greeting)
# 输出会话执行的结果。
print(result)
# 关闭会话,这是一种显式关闭会话的方式。
sess.close()

本地输出:

b'Hello Google Tensorflow!'

(2)线性函数的计算

Tensorflow像搭积木一样将各个不同的计算模块拼接成流程图,完成一次线性函数的计算,并在一个隐式会话中执行。

# 代码74:使用Tensorflow完成一次线性函数的计算
# 声明matrix1为Tensorflow的一个1*2的行向量。
matrix1 = tf.constant([[3., 3.]])
# 声明matrix2为Tensorflow的一个2*1的列向量。
matrix2 = tf.constant([[2.], [2.]])

# product将上述两个算子相乘,作为新算例。
product = tf.matmul(matrix1, matrix2)

# 继续将product与一个标量2.0求和拼接,作为最终的linear算例。
linear = tf.add(product, tf.constant(2.0))

# 直接在会话中执行linear算例,相当于将上面所有的单独算例拼接成流程图来执行。
with tf.Session() as sess:
    result = sess.run(linear)
    print(result)

本地输出:

[[14.]]

(3)“良/恶性乳腺癌肿瘤”预测

尽管上面的代码可以说明Tensorflow是一个编程框架,但是截至目前还没有显示出其机器学习的能力。那么接下来利用Tensorflow自行搭建一个线性分类器,重新对“良/恶性乳腺癌肿瘤”从事预测。与直接使用Scikit-learn中已经编写好的LogisticRegression模型不同,Tensorflow允许使用者自由选取不同操作,并组织一个学习系统。这里对所要使用的线性分类器做一个简化:取0.5(良性肿瘤为0,恶性肿瘤为1)为界,并采用最小二乘法拟合模型参数。

# 代码75:使用Tensorflow自定义一个线性分类器用于对“良/恶性乳腺癌肿瘤”进行预测
# 导入tensorflow。
import tensorflow as tf
# 导入numpy。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值