四时宝库

程序员的知识宝库

机器学习100天-Day2101 Tensorflow入门

说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解。

进入第二部分深度学习

第九章启动并运行Tensorflow

Tensorflow是一款用于数值计算的强大的开源软件库,特别适用于大规模机器学习的微调。

它的基本原理很简单:首先在 Python 中定义要执行的计算图(例如图 9-1),然后 TensorFlow 使用该图并使用优化的 C++ 代码高效运行该图。

  • 提供了一个非常简单的 Python API,名为 TF.Learn2(tensorflow.con trib.learn),与 Scikit-Learn 兼容。正如你将会看到的,你可以用几行代码来训练不同类型的神经网络。之前是一个名为 Scikit Flow(或 Skow)的独立项目。
  • 提供了另一个简单的称为 TF-slim(tensorflow.contrib.slim)的 API 来简化构建,训练和求出神经网络。
  • 其他几个高级 API 已经在 TensorFlow 之上独立构建,如 Keras 或 Pretty Tensor。
  • 它的主要 Python API 提供了更多的灵活性(以更高复杂度为代价)来创建各种计算,包括任何你能想到的神经网络结构。
  • 它提供了几个高级优化节点来搜索最小化损失函数的参数。由于 TensorFlow 自动处理计算您定义的函数的梯度,因此这些非常易于使用。这称为自动分解(或autodi)。
  • 它还附带一个名为 TensorBoard 的强大可视化工具,可让您浏览计算图表,查看学习曲线等。
  • 这一章主要是介绍TensorFlow基础知识,从安装到创建,运行,保存和可视化简单的计算图

我发现之前看的tf相关教程还是太零散了,当时应该直接跳到这里……

1.安装

我的anaconda依旧不行,看来回去的时候要重做系统了。

常规的话使用pip install tensorflow语句即可完成安装。在GPU版本中需要安装英伟达对应的coda和相关包。这部分我打算放在colab上运行。

2.创建第一个图谱

生成一个计算图谱,tf会负责在处理器上运行并保留变量值

import tensorflow as tf
x = tf.Variable(3, name='x')
y = tf.Variable(4, name='y')
f = x * x * y + y + 2

运行会话

#教程中做了两次优化
#1.使用sess.run(),但是有些麻烦
#2.使用with打开会话后,变量初始化并运行:x.initialzier.run(),依旧麻烦
#3.使用全局global_variables_initializer(),就不用手动处理每一个变量
init=tf.global_variables_initializer()
with tf.Session() as sess:
 init.run()
 result=f.eval()
 print(result)

TensorFlow程序通常分为两部分:第一部分构建计算图谱(这称为构造阶段),第二部分运行它(这是执行阶段)。 建设阶段通常构建一个表示 ML 模型的计算图谱,然后对其进行训练,计算。 执行阶段通常运行循环,重复地求出训练步骤(例如,每个小批次),逐渐改进模型参数

3.管理图谱

在程序中创建的每一个节点都会添加至默认图形中。

4.Tensorflow实现线性回归

这里使用的是第二章的房地产数据,完成求theta数值的公式

import tensorflow as tf
import numpy as np
from sklearn.datasets import fetch_california_housing
housing=fetch_california_housing()
# print(housing)
m,n=housing.data.shape
housing_data_plus_bias=np.c_[np.ones((m,1)),housing.data]
X=tf.constant(housing_data_plus_bias,dtype=tf.float32,name='X')
y=tf.constant(housing.target.reshape(-1,1),dtype=tf.float32,name='y')
#对X进行转置
XT=tf.transpose(X)
#matmul矩阵相乘
theta=tf.matmul(tf.matmul(tf.matrix_inverse(tf.matmul(XT,X)),XT),y)
with tf.Session() as sess:
 #eval用于获取返回值
 theta_value=theta.eval()
print(theta_value)
# [[-3.7185181e+01]
# [ 4.3633747e-01]
# [ 9.3952334e-03]
# [-1.0711310e-01]
# [ 6.4479220e-01]
# [-4.0338000e-06]
# [-3.7813708e-03]
# [-4.2348403e-01]
# [-4.3721911e-01]]

教程中与sklearn的系那行回归模型结果进行了对比,结果是一致的

from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(housing.data, housing.target.reshape(-1, 1))
print(np.r_[lin_reg.intercept_.reshape(-1, 1), lin_reg.coef_.T])

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接