tensorflow 学习(一)

改系列只为记录我学习 udacity 中深度学习课程!!

1. 整个课程分为四个部分,如上图所示。

第一部分将研究逻辑分类器,随机优化以及实际数据训练。

第二部分我们将学习一个深度网络,和使用正则化技术去训练一个更大的模型

第三部分我们将深入研究图像和卷积模型

第四部分我们将学习文本和序列,我们将训练嵌入和递归模型

2. 课程将注重分类问题的研究

分类问题:典型的情况是你有很多样本,我们称为训练数据集,我们已经把他们归类了。

现在有一个全新的样本,你的目标是要指出这个样本属于哪一类?

3. 机器学习中不只是分类问题,但分类是整个机器学习的基石!

 

第二张图中,如果我们想做到行人检测,我们可以设计一个分类器将图中的小块分为行人/非行人两类,当分类器输入行人时,就要告诉我们行人的位置。

第三张图中,如果我们想做到网页搜索,我们可以使分类器接收成对的搜索请求,网页的输出则是相关/不相关两类。

4. 逻辑分类器是一种线性分类器

它接收输入X,比如图片的像素,对输入执行一个线性函数来生成预测,称为评分函数,该函数就是一个巨大的矩阵乘法。

其中 W 是权重weights, b 是偏置项bias.

机器学习的目的就是为了找到一 W&b 使得我们的预测结果表现的非常好。

我们如果用上面的结果来执行分类呢?

我们将这些结果转化成概率,这将使得正确的分类概率接近于1,不正确的接近于0.

我们将结果转化为概率的方法是使用一个 Softmax 函数

我们将这些结果转化成概率,这将使得正确的分类概率接近于1,不正确的接近于0.

下面是在python中实现 softmax 函数的代码,值得注意的是当线性函数输出数量级较大时 softmax 函数 概率区别度越高,反之乐接近于平均分布。

#coding=utf-8
"""Softmax."""
# 假设线性函数输出为三个类别值,设计softmax函数给输出打分,获得分类概率
scores = [3.0, 1.0, 0.2]

import numpy as np

def softmax(x):
    """Compute softmax values for each sets of scores in x."""

    return np.exp(x) / np.sum(np.exp(x), axis=0)

print(softmax(scores))

# Plot softmax curves
import matplotlib.pyplot as plt
x = np.arange(-2.0, 6.0, 0.1)
scores = np.vstack([x, np.ones_like(x), 0.2 * np.ones_like(x)])

plt.plot(x, softmax(scores).T, linewidth=2)
plt.show()

5. One-Hot编码

目的是使得正确的类别得分为1,不正确的为0

6. cross-entropy loss

同时我们将使用交叉熵损失函数来量化预测得到的分类标签的得分与真实标签之间的一致性。

即    

 我们的目的就是找到一对合适的 W 和 b 最小化损失函数。

该线性分类问题就转化成了一个数据最优化的问题,在最优化的过程中,通过更新评分函数的参数来最小化损失函数值。

最简单的方法就是梯度下降法,对损失函数的每一个变量求偏导,然后不断更新变量,直到达到局部最优。

7. 正则化输入和初始权重

输入数据过大或者过小都很严重影响我们的数值计算过程,所以我们要尽量将数据正则化为均值为0同方差的数据。

以图像为例,我们可以这么做:

这并没有改变你的图像信息,而且更利于数值优化。

在梯度下降过程众,你也会想要你的权重 W 和偏置 b 初始化在一个足够好的开始点。

比如,我们的参数可以从均值为0,标准差为sigma 的高斯分布中随机抽取。sigma的值决定了最优化过程中,在初始点你输出的数量级,通过softmax函数后,也将决定你初始化概率分布的峰值。

一个大的sigma将决定你的初始概率分布有一个较大的峰值,一个小的sigma则使得你的概率分布是不确定的。通常比较好的是开始于一个小的不确定的分布,所以选一个小的sigma。

总结来说,我们得到我们的训练数据后,先将这些数据标准化为均值为0方差一致的数据。然后我们把他乘以 权重 W 加上偏置项 b,权重初始化为随机权重。然后我们使用softmax函数得到概率,使用交叉熵损失计算整个训练数据上的平均损失。然后我们使用神奇的最优化包计算这个损失函数对权重和偏差的倒数,接着沿导数相反方向更新权重和偏差。重复这个过程,直到损失函数达到极小值(局部最优)。

时间: 2024-12-20 01:18:55

tensorflow 学习(一)的相关文章

Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节点之间则是由张量(Tensor)作为边来连接在一起的.所以Tensorflow的计算过程就是一个Tensor流图.Tensorflow的图则是必须在一个Session中来计算.这篇笔记来大致介绍一下Session.Graph.Operation和Tensor. Session Session提供了O

TensorFlow学习路径【转】

作者:黄璞链接:https://www.zhihu.com/question/41667903/answer/109611087来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言:其实TensorFlow本身仅仅是一个分布式的高性能计算框架,想要用TF做深度学习,仅仅学习这个框架本身是没有太大意义的.因此应该将TF看作技术路线中的一个核心点,去掌握整个开发所需要的必要技术,知识.尤其是深度学习的基本原理,这对日后搭建模型,模型调参以至提出新的模型都是极其有用的.

TensorFlow学习笔记(UTF-8 问题解决 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte)

我使用VS2013  Python3.5  TensorFlow 1.3  的开发环境 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 在是使用Tensorflow读取图片文件的情况下,会出现这个报错 代码如下 # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np import mat

python tensorflow 学习

Tensorflow系列--Saver的用法:http://blog.csdn.net/u011500062/article/details/51728830 Tensorflow学习系列(二): tensorflow基础:http://blog.csdn.net/vs412237401/article/details/62039686 原文地址:https://www.cnblogs.com/cxscode/p/8283361.html

用tensorflow学习贝叶斯个性化排序(BPR)

在贝叶斯个性化排序(BPR)算法小结中,我们对贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR)的原理做了讨论,本文我们将从实践的角度来使用BPR做一个简单的推荐.由于现有主流开源类库都没有BPR,同时它又比较简单,因此用tensorflow自己实现一个简单的BPR的算法,下面我们开始吧. 1. BPR算法回顾 BPR算法是基于矩阵分解的排序算法,它的算法训练集是一个个的三元组$<u,i,j>$,表示对用户u来说,商品i的优先级要高于商品j.训练成

Tensorflow学习笔记(一):MNIST机器学习入门

学习深度学习,首先从深度学习的入门MNIST入手.通过这个例子,了解Tensorflow的工作流程和机器学习的基本概念. 一  MNIST数据集 MNIST是入门级的计算机视觉数据集,包含了各种手写数字的图片.在这个例子中就是通过机器学习训练一个模型,以识别图片中的数字. MNIST数据集来自 http://yann.lecun.com/exdb/mnist/ Tensorflow提供了一份python代码用于自动下载安装数据集.Tensorflow官方文档中的url打不开,在CSDN上找到了一

Tensorflow学习笔记3:TensorBoard可视化学习

TensorBoard简介 Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph.定量指标图以及附加数据.大致的效果如下所示, TensorBoard工作机制 TensorBoard 通过读取 TensorFlow 的事件文件来运行.TensorFlow 的事件文件包括了你会在 TensorFlow 运行中涉及到的主要数据.关于TensorBoard的详细介绍请参考TensorBoard:可视化学习.下面做个简单介绍. Tensorf

Tensorflow学习笔记(对MNIST经典例程的)的代码注释与理解

1 #coding:utf-8 2 # 日期 2017年9月4日 环境 Python 3.5  TensorFlow 1.3 win10开发环境. 3 import tensorflow as tf 4 from tensorflow.examples.tutorials.mnist import input_data 5 import os 6 7 8 # 基础的学习率 9 LEARNING_RATE_BASE = 0.8 10 11 # 学习率的衰减率 12 LEARNING_RATE_DE

Tensorflow学习笔记(1)

一.背景 本人学习Tensorflow是为了完成毕业设计的工作,之前并没有用过其他的深度学习平台,Tensorflow作为当前很流行的一个平台,无论是教学文档,还是使用其开发的工程,这些资源都是很丰富的,所以很适合新手来进行入门.Tensorflow的具体背景我就不过多的介绍了,网上有很多的资源.另外我写这一系列博客的目的是激励自己吧,逼着自己学得更透彻一点,毕竟会用和能熟悉的写成教程还是两码事,希望自己能坚持下去. 2.Tensorflow安装 我使用的是自己的笔记本电脑,配置是i7-6700

Tensorflow学习笔记一

今天开始正式学习Tensorflow, 首先从源码开始, 装好了CentOS 7 X64, 并且安装了桌面版本, 计划能够构建Tensorflow成功 首先从Github从Fork了一个版本到我的Git账号, 然后clone到本地 首先要了解Bazel, 这是什么东西?这是谷歌代码构建工具, 没有办法, 先自己构建一个吧 https://bazel.build/versions/master/docs/install.html#ubuntu