Shard

《TensorFlow深度学习算法原理与编程实战》笔记

作者:蒋子阳

DataFrame.hist()

Pandas

绘制图表了解一个列中值的分布

import pandas as pd
import matplotlib.pyplot as plt

california_housing_dataframe = pd.read_csv("https://download.mlcc.google.cn/mledu-datasets/california_housing_train.csv", sep=",")
california_housing_dataframe.hist('median_house_value')
plt.show()

结果

 

......


DataFrame.head()

Pandas

显示 DataFrame 的前几个记录

california_housing_dataframe.head(8)

结果:

   longitude  latitude  ...  median_income  median_house_value
0    -114.31     34.19  ...         1.4936             66900.0
1    -114.47     34.40  ...         1.8200             80100.0
2    -114.56     33.69  ...         1.6509             85700.0
3    -114.57     33.64  ...         3.1917             73400.0
4    -114.57     33.57  ...         1.9250             65500.0
5    -114.58     33.63  ...         3.3438             74000.0
6    -114.58     33.61  ...         2.6768             82400.0
7    -114.59     34.83  ...         1.7083             48500.0

......


DataFrame.describe()

Pandas

显示关于 DataFrame 的统计信息。

california_housing_dataframe.describe()

结果:

          longitude      latitude  ...  median_income  median_house_value
count  17000.000000  17000.000000  ...   17000.000000        17000.000000
mean    -119.562108     35.625225  ...       3.883578       207300.912353
std        2.005166      2.137340  ...       1.908157       115983.764387
min     -124.350000     32.540000  ...       0.499900        14999.000000
25%     -121.790000     33.930000  ...       2.566375       119400.000000
50%     -118.490000     34.250000  ...       3.544600       180400.000000
75%     -118.000000     37.720000  ...       4.767000       265000.000000
max     -114.310000     41.950000  ...      15.000100       500001.000000

......


pandas.read_csv()

Pandas

将 CSV 数据导入 pandas 库的 DataFrame

california_housing_dataframe = pd.read_csv("https://download.mlcc.google.cn/mledu-datasets/california_housing_train.csv", sep=",")


Series

Pandas

Series,它是单一列。DataFrame 中包含一个或多个 Series,每个 Series 均有一个名称。

创建 Series 的一种方法是构建 Series 对象。例如:

pd.Series(['San Francisco', 'San Jose', 'Sacramento'])


DataFrame

Pandas

DataFrame,您可以将它想象成一个关系型数据表格,其中包含多个行和已命名的列。

您可以将映射 string 列名称的 dict 传递到它们各自的 Series,从而创建DataFrame对象。如果 Series 在长度上不一致,系统会用特殊的 NA/NaN 值填充缺失的值。例如:
 

city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
population = pd.Series([852469, 1015785, 485199])

......


Pandas 简介

Pandas

pandas 是一种列存数据分析 API。它是用于处理和分析输入数据的强大工具,很多机器学习框架都支持将 pandas 数据结构作为输入。 虽然全方位介绍 pandas API 会占据很长篇幅,但它的核心概念非常简单,我们会在下文中进行说明。有关更完整的参考,请访问 pandas 文档网站,其中包含丰富的文档和教程资源。


学习率

概念

学习率(Learning Rate)就相当与对输入所做的一个微小变化,定义每次参数更新的幅度。


梯度下降

算法

顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)。


最小二乘法

概念

法国数学家,阿德里安-馬里·勒讓德(1752-1833,这个头像有点抽象)提出让总的误差的平方最小的y 就是真值,这是基于,如果误差是随机的,应该围绕真值上下波动。


Bernoulli分布

概念

伯努利分布(英语:Bernoulli distribution,又名两点分布或者0-1分布,是一个离散型概率分布,为纪念瑞士科学家雅各布·伯努利而命名。)若伯努利试验成功,则伯努利随机变量取值为1。若伯努利试验失败,则伯努利随机变量取值为0。


softmax回归

算法
post-image

softmax逻辑回归模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签y可以取两个以上的值。 Softmax回归模型对于诸如MNIST手写数字分类等问题是很有用的,该问题的目的是辨识10个不同的单个数字。


Sigmoid函数

函数

sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。Sigmoid作为激活函数有以下优缺点:
优点:平滑、易于求导。
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。


激活函数

概念

将每个神经元的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了。这个非线性的函数我们通常会称为“激活函数 Activation Functiion”。


损失函数

概念

损失函数或成本函数是指一种将一个事件(在一个样本空间中的一个元素)映射到一个表达与其事件相关的经济成本或机会成本的实数上的一种函数,借此直观表示的一些"成本"与事件的关联。


反向传播算法

算法

反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。

反向传播要求有对每个输入值想得到的已知输出,来计算损失函数梯度。因此,它通常被认为是一种监督式学习方法,虽然它也用在一些无监督网络(如自动编码器)中。它是多层前馈网络的Delta规则的推广,可以用链式法则对每层迭代计算梯度。反向传播要求人工神经元(或“节点”)的激励函数可微。


特征向量

概念

特征向量(Feature Vector)是用于描述实体的所有数字的组合。


前馈神经网络

概念

深度前馈网络(deep feedforward network),也叫作前馈神经网络(feedforward neural network)或者多层感知机(multilayer perceptron,MLP)。对深度前馈网络的理解,从感知机的角度可能更易。感知机又被成为最简单的神经网络,顾名思义,多层感知机就是在感知机的基础上设计添加了更多层。


常数生成函数

方法

zeros(shape,dtype,name)    #产生全0的数组

#tf.zeros([2,3],int32) => [[0,0,0],[0,0,0]]

ones(shape,dtype,name)    #产生全1的数组

......


随机生成函数

方法

#正态分布

random_normal(shape,mean,stddev,dtype,send,name)

参数:形状、平均值、标准差、数值类型、随机种子、名称

......


tf数据类型

语法

整数型:

tf.int8、tf.int16、tf.int32、tf.int64、uint8

实数型:

......


tf.reshape(张量变形)

指令

由于张量加法和矩阵乘法均对运算数施加了限制条件,TensorFlow 编程者需要频繁改变张量的形状。

您可以使用 tf.reshape 方法改变张量的形状。

例如,您可以将 8x2 张量变形为 2x8 张量或 4x4 张量:

......


tf.matmul(矩阵乘法)

指令

在线性代数中,当两个矩阵相乘时,第一个矩阵的列数必须等于第二个矩阵的行数。

tf.matmul(x, y)


广播

概念

TensorFlow 支持广播(一种借鉴自 NumPy 的概念)。利用广播,元素级运算中的较小数组会增大到与较大数组具有相同的形状。


tf.assign(分配变量值)

指令

可以先创建变量,然后再如下所示地分配一个值(注意:您始终需要指定一个默认值):

y = tf.Variable([0]) y = y.assign([5])


TensorFlow 图

概念

TensorFlow 图(也称为计算图或数据流图)是一种图数据结构。很多 TensorFlow 程序由单个图构成,但是 TensorFlow 程序可以选择创建多个图。图的节点是指令;图的边是张量。张量流经图,在每个节点由一个指令操控。一个指令的输出张量通常会变成后续指令的输入张量。TensorFlow 会实现延迟执行模型,意味着系统仅会根据相关节点的需求在需要时计算节点。


TensorFlow 指令

概念

TensorFlow 指令会创建、销毁和操控张量。典型 TensorFlow 程序中的大多数代码行都是指令。


矩阵

概念

矩阵是二维数组(二阶张量)。例如,[[3.1, 8.2, 5.9][4.3, -2.7, 6.5]]


矢量

概念

矢量是一维数组(一阶张量)。例如,[2, 3, 5, 7, 11] 或 [5]


标量

概念

标量是零维数组(零阶张量)。例如,'Howdy' 或 5


张量

概念

TensorFlow 的名称源自张量,张量是任意维度的数组。借助 TensorFlow,您可以操控具有大量维度的张量。


Pandas

模块

pandas 是一种列存数据分析 API。它是用于处理和分析输入数据的强大工具,很多机器学习框架都支持将 pandas 数据结构作为输入。


人工神经网络

概念

人工神经网络(英语:Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统,通俗的讲就是具备学习功能。现代神经网络是一种非线性统计性数据建模工神经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。


深度学习

概念

深度学习(英语:deep learning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。


无监督学习

概念

无监督学习(英语:Unsupervised learning)是机器学习的一种方法,没有给定事先标记过的训练示例,自动对输入的数据进行分类或分群。无监督学习的主要运用包含:分群(Cluster Analysis)、关系规则(Association Rule)、维度缩减(Dimensionality Reduce)。它是监督式学习和强化学习等策略之外的一种选择。 一个常见的无监督学习是数据聚类。在人工神经网络中,生成对抗网络(GAN)、自组织映射(SOM)和适应性共振理论(ART)则是最常用的非监督式学习。


监督学习

概念

监督式学习(英语:Supervised learning),是机器学习的一种方法,可以由训练资料中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练资料是由输入物件(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。


机器学习

概念

机器学习是人工智能的一个分支。人工智能的研究历史有着一条从以“推理”为重点,到以“知识”为重点,再到以“学习”为重点的自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。很多推论问题属于无程序可循难度,所以部分的机器学习研究是开发容易处理的近似算法。


评论