TensorFlow笔记3——利用TensorFlow和MNIST数据集训练一个最简单的手写数字识别模型

前言 当我们开始学习编程的时候,第一件事往往是学习打印"Hello World"。就好比编程入门有Hello World,机器学习入门有MNIST。 MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片: 它也包含每一张图片对应的标签,告诉我们这个是数字几。比如,上面这四张图片的标签分别是5,0,4,1。 其实训练一个简单的手写数字识别模型的代码很短,我的示例代码总共也就50行,除去注释、空格之类的估计连30行也没有,但是去理解包含在代码中的设计思想是很重要的,因此这篇笔记我会将我对每段代码的理解都记录下来。 参考: MNIST机器学习入门 机器学习-损失函数 ...

TensorFlow笔记4——优化手写数字识别模型之代价函数和拟合

前言 上篇笔记我们利用MNIST数据集训练了一个手写数字识别的模型,但是准确率非常的低,维持在91%左右,我们可以尝试着将准确率提高到96%以上,在实验之前我们需要先了解一些基本的概念,本篇文章可能会有些枯燥,因为大多都是理论知识。 本文重点 激活函数 代价函数 拟合 什么是激活函数?激活函数是干嘛的? 想了解什么是激活函数,就要先了解神经网络的基本模型,下图所示为一单一人工神经网络的基本模型图: ...

TensorFlow笔记5-—优化手写数字识别模型之优化器

什么是优化器(Optimizer) 神经网络越复杂 , 数据量越大 , 我们需要在训练神经网络的过程上花费的时间也就越多. 原因很简单, 就是因为计算量太大了. 可是往往有时候为了解决复杂的问题, 复杂的结构和大数据又是不能避免的, 所以我们需要寻找一些方法, 让神经网络聪明起来, 快起来。那些可以加速神经网络训练的方法就叫做优化器(Optimizer) 推荐阅读:加速神经网络训练 (Speed Up Training) 常见的优化器 这个部分的理论知识实在太多了,我简单的整理了一点点,详见机器学习:各种优化器Optimizer的总结与比较 下面是TensorFlow中提供的相关优化器的API ...

TensorFlow笔记(1)——TensorFlow中的相关基本概念

前言 Tensorflow 是一个编程系统,使用图(graph)来表示计算任务,图(graph)中的节点称之为 op (operation),一个 op 获得 0 个或多个 Tensor,执行计算,产生 0 个或多个 Tensor。Tensor 看作是一个 n 维的数组或列表。图必须在会话(Session)里被启动。 基本概念 使用图(Graph)来表示计算任务 在被称为会话(Session)的上下文(context)中执行图 使用tensor表示数据 通过变量(Variable)维护状态 使用feed和fetch可以为任意的操作赋值或者从中获取数据 下图显示了Session、Graph、Tensor、Variable之间的关系 ...

【译】Post-training 量化

Post-training 量化是一种可以减小模型大小, 同时降低 3 倍延迟并且仍然能够保持模型精度的一般方法。 Post-training量化将权重从浮点量化为 8 位精度。 此技术在 TensorFlow Lite model converter 中作为一个功能选项被使用。 import tensorflow as tf converter = tf.contrib.lite.TocoConverter.from_saved_model(saved_model_dir) converter.post_training_quantize = True tflite_quantized_model = converter.convert() open("quantized_model.tflite", "wb").write(tflite_quantized_model) 在推理时, 权重值从 8 位精度转换为浮点数, 并使用浮点内核进行计算。 此转换只执行一次并进行缓存以减少延迟。 ...

【译】模型优化

在将机器学习模型部署到移动设备时, 推理效率是一个关键问题。 当训练的计算需求随着在不同体系结构上训练的模型的数量而增长时, 推理的计算需求与用户的数量正比增长。 Tensorflow模型优化工具包最大限度地降低了推理的复杂性 - 模型大小, 延迟和功耗。 用例 模型优化适用于: 将模型部署到算力, 内存和功耗受限的边缘设备上。 例如, 移动设备和物联网(IoT)设备。 减少无线模型更新的有效负载大小。 在由定点操作约束的硬件上执行。 优化专用硬件加速器的模型。 ...

plainify

为了预测股票,我用TensorFlow深度学习了股市数据

完整源码可在微信公众号:「01 二进制」后台回复:「股市分析」获取 阅读此文前建议先阅读《找对象的过程中,我竟然理解了什么是机器学习!》 前言 相信大家这几天或多或少的都开始关注到股市了,虽然我还不是很懂里面的一些套路,但是从最近各个公众号的推送里面,我也看到最近的股市确实是形势大好。对很多人来说,股票就和房价一样,他的升与降牵动着众多人的心。这几天很多 qq 群、微信群都开始讨论起股票了,各位坊间大神也纷纷开始预测各种股票走势了。 股票价格是典型的时间序列数据(简称时序数据),会受到经济环境、政府政策、人为操作多种复杂因素的影响,所以说股票价格预测是一件非常唬人的事情。但是基于历史数据,以股票价格为例,介绍如何对时序数据进行预测,仍然值得一做。 不过今天我们不聊股市,因为我也不是很懂,今天我们来聊聊我们知道的东西。如今深度学习在金融市场的应用越来越广泛,我们能否利用已有的历史数据通过深度学习的方式来进行预测呢? 准备工作 答案自然是可以的,虽然我们无法非常准确的进行预测,但是作为一个深度学习入手的项目是完完全全可以的。 实验环境 老样子,以免出现因环境导致的问题,先将实验环境列出: MacOS 10.14.3 Python 3.6.8(Anaconda) Jupyter Notebook 使用的包有: TensorFlow Keras matplotlib pandas 数据 此次实验,我们采用STATWORX的S&P 500股价数据,该数据集爬取自 Google Finance API,已经进行过缺失值处理。他们的官方网站是:https://www.statworx.com/。 数据集可在微信公众号:「01 二进制」后台回复:「股市数据集」获取 数据预览 在这里我们还是使用 pandas,主要用于数据清洗和整理 import pandas as pd data=pd.read_csv('data/data_stocks.csv') data.info() 执行data.info()可以查看特征的概要: <class 'pandas.core.frame.DataFrame'> RangeIndex: 41266 entries, 0 to 41265 Columns: 502 entries, DATE to NYSE.ZTS dtypes: float64(501), int64(1) memory usage: 158....