np.random.randn()
:
tensorflow eager 动态图机制
官方教程
tensorflow的Eager execution:命令式编程环境,立即评估操作不需要构建图,操作会返回具体的值,可以轻松地调试TensorFlow代码。
启动Eager execution:
tf.enable_eager_execution()
tfe = tf.contrib.eager # eager模块
reduce_sum(reduction_indices) 参数的理解
tf.argmax()
取每列最大值的索引:
test = np.array([[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7, 2]])
np.argmax(test, 0) #输出:array([3, 3, 1]
np.argmax(test, 1) #输出:array([2, 2, 0, 0]
tf.cast()
将x的数据类型转化为dtype
cast(
x,
dtype,
name=None
)
eval()和run()的区别
eval和run都是用来获取当前节点值的函数。使用eval时,若有一个t是tensor对象,调用t.eval()相当于调用sess.run(t), 主要区别是eval一次只能获得一个节点值,run可以得到多个。
tip: 分屏,windows—>editor tab----> split vertically
以下两个函数的区别:
tf.nn.sparse_softmax_cross'_entropy_with_logits(logits=net, labels=y)
tf.nn.softmax_cross_entropy_with_logits(logits=net, labels=y2)
sparse_softmax_cross_entropy_with_logits中 lables接受直接的数字标签
如[1], [2], [3], [4] (类型只能为int32,int64)
而softmax_cross_entropy_with_logits中 labels接受one-hot标签
如[1,0,0,0], [0,1,0,0],[0,0,1,0], [0,0,0,1] (类型为int32, int64)
相当于sparse_softmax_cross_entropy_with_logits 对标签多做一个one-hot动作
K邻近算法
kmeans聚类算法
参考博客
思想:无监督学习算法,把一堆没有label的数据自动划分为几类,同类数据具有相同特征,一类数据内部的样本相似度高,不同类的差异性高。
K值:分类的类个数
质心:每个类的均值向量,即向量各维取平均
距离度量指标:欧氏距离和余弦相似度
算法过程:
mini-batch是什么
滑动平均模型用于提高测试集数据的鲁棒性,当数据变化太快时提供了一种机制
贝叶斯算法 先验概率和后验概率
参考博客
总结:后验概率是由果推导原因的公式。
参考博客!很好!
这个男女生穿凉鞋的例子真是太好了!看了很多次也没看懂的贝叶斯这次终于看懂了- A -
normal分布和truncated_normal
Normal Distribution称为正态分布,也称为高斯分布,Truncated Normal Distribution一般翻译为截断正态分布,也有称为截尾正态分布.截断正态分布是截断分布(Truncated Distribution)的一种,是指,限制变量x取值范围(scope)的一种分布。例如:
- 限制x取值在0到50之间
- 限制取值上限
- 限制取值下限
- 上限下限取值都限制
正态分布可以认为是不进行任何截断,因为x取值可以从负无穷到正无穷。
让变量x的取值,进行截断,有什么意义呢? 通常,如果我们只关心在某一个范围内的样本的分布时,会考虑使用截断的方法。例如,假设我们知道一个班级学生的成绩,是服从正态分布的,那么,这个班级中,如果只观察考试成绩前10名的同学,那么他们服从什么分布呢?
知道了什么是截断分布,理解截断正态分布就容易了。如果,原来X服从正态分布,那么,对X的取值加一些限制条件之后,带有限制条件的X就服从截断正态分布了。同样,限制条件还是分为三种情况:限制取值上限、限制取值下限、上限下限取值都限制。因此,截断正态分布,除了具有正态分布的两个参数——均值、方差之外,还有另外两个参数:
取值上限(可以取正无穷)
取值下限(可以取负无穷)
tf.truncated_normal(stddev):
truncated_normal(
shape,
mean=0.0,
stddev=1.0,
dtype=tf.float32,
seed=None,
name=None
)
# 产生截断正态分布随机数,取值范围为 [ mean - 2 * stddev, mean + 2 * stddev ]。
global_Step
embedding_lookup()
Estimator
参考博客
Estimator可以帮我们做什么:
- 建立、管理graph和Session对象
- 初始化variables
- 开始 queues。
- 处理 exceptions。
- 创建 checkpoint 文件,从失败中恢复训练。
- 保存 summaries for TensorBoard
input pipeline和model是分离的,简化了在不同数据集上的实验过程,使你在最小的代码修改量的情况下实验不同的模型结构。
使用内置estimator程序的步骤:
(1)编写数据集导入函数, 一个数据集导入函数返回两个对象:
- 一个字典: 特征名—>表示特征数据的tensor
- 一个tensor : 包含一个或多个label
def input_fn(dataset):
... # manipulate dataset, extracting the feature dict and the label
return feature_dict, label
(2)定义feature columns, 以定义feature的名字、类型等
(3)实例化内置estimator
(4)调用training/evaluation/inference方法
推荐将内置estimator作为问题解决的一个baseline。
Dataset API
参考博客
各个类如下所示:
Dataset
:创建、变换数据集的方法 的基类。您还可以通过该类从 内存中的数据 或 Python 生成器 初始化数据集。
TextLineDataset
:从文本文件读取行。
TFRecordDataset
:从 TFRecord 文件读取 records。
FixedLengthRecordDataset
:从二进制文件读取固定大小的 records。
Iterator
: 提供一次访问一个数据集元素的方法。
决策树
随机森林
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。