gluon

利用深度学习来预测股票价格变动

拟墨画扇 提交于 2020-11-18 06:36:51
https://www.toutiao.com/i6644852565341110791/ 利用深度学习来预测股票价格变动(长文,建议收藏) 原创 不靠谱的猫 2019-01-10 21:01:39 完整架构概述 在这篇文章中,我将创建一个预测股票价格变动的完整过程。我们将使用生成对抗网络(GAN)与LSTM(一种循环神经网络)作为生成器,使用卷积神经网络CNN作为鉴别器。我们使用LSTM的原因很明显,我们正在尝试预测时间序列数据。为什么我们使用GAN,特别是卷积神经网络(CNN)作为鉴别器呢?这是一个很好的问题:稍后会有特别的部分。 当然,我们将详细介绍每个步骤,但最困难的部分是GAN:成功训练GAN的非常棘手的部分是获得正确的超参数集。出于这个原因,我们将使用贝叶斯优化(还有高斯过程)和深度强化学习(DRL)来决定何时以及如何改变GAN的超参数。在创建强化学习时,我将使用该领域的最新进展,例如Rainbow和PPO。 我们将使用许多不同类型的输入数据。除了股票的历史交易数据和技术指标,我们将使用NLP的最新进展(使用“BERT,对NLP进行迁移学习)来创建情感分析(作为基本面分析的来源) ),用于提取整体趋势方向的傅里叶变换,用于识别其他高级特征的栈式自动编码器,用于查找相关资产的特征投资组合,差分整合移动平均自回归模型(ARIMA))对于股票函数近似

mxnet 线性模型

落爺英雄遲暮 提交于 2020-11-06 05:41:10
mxnet 线性模型 import mxnet import mxnet.ndarray as nd from mxnet import gluon from mxnet import autograd # create data def set_data(true_w, true_b, num_examples, *args, **kwargs): num_inputs = len(true_w) X = nd.random_normal(shape=(num_examples, num_inputs)) y = 0 for num in range(num_inputs): # print(num) y += true_w[num] * X[:, num] y += true_b y += 0.1 * nd.random_normal(shape=y.shape) return X, y # create data loader def data_loader(batch_size, X, y, shuffle=False): data_set = gluon.data.ArrayDataset(X, y) data_iter = gluon.data.DataLoader(dataset=data_set, batch_size=batch_size, shuffle

Mxnet (44): 使用神经协作过滤(NeuMF模型)进行个性化排名

ⅰ亾dé卋堺 提交于 2020-10-14 22:41:59
1.个性化排名 前面对电影数据集的处理只考虑了明确的反馈,通过观察到的等级进行了训练和测试。这种方法有两个缺点: 在实际应用中,大多数的反馈都是隐式的,显式的反馈往往需要更高的收集成本。 未被观察的哪些用户-项目交互可能用于预测用户的喜好但是被忽略了,当这些缺失不是随机导致的而是由于用户的喜好导致的这些方法将不在适用。很显然,未观测的这些用户-项目对是用户真实的负反馈(用户对这些不感兴趣才没看)和缺失值(正常随机的缺失,跟喜好无关,将来有可能会看)的结合体。如果简单的忽略其实是不对的。 为了解决这个问题,针对从隐式反馈生成排名推荐列表的一类推荐模型已获得普及。通常, 可以使用逐点、逐对以及逐列的方法优化个性化排名模型。逐点方法一次只考虑一次交互,并训练分类器或回归器来预测个人偏好。矩阵分解和AutoRec使用逐点目标进行了优化。 逐对方法为每一个用户考虑一对项目并且致力于为这对项目最优排序。通常, 逐对方法更适合于排序任务,因为预测一对的顺序会使人联想到排序。逐列方法将整列的项目近似排序, 如直接优化排名指标:Normalized Discounted Cumulative Gain ( NDCG )。然而, 列表方法比点方法或成对方法更加复杂且计算量大。 1.1 贝叶斯个性化排序 贝叶斯个性化排序(BPR)是从最大后验估计量得出的成对个性化排序损失

Mxnet (32): 迁移学习(Fine-Tuning)进行热狗识别

浪子不回头ぞ 提交于 2020-10-04 09:51:50
总所周知,对于训练模型,一定是数据量越大准去率越高,同时越难以过拟合,泛化能力更强。一些模型训练的数据太少,当应用的时候输入的数据范围又太大,导致最终训练的模型的准确性可能无法满足实际需求。 为了解决上面的问题,一个方法就是获取更多的数据,但是获取数据是一个比较浪费金钱以及时间的事情。另一个方法就是通过迁移学习,将学习到的知识从源数据集迁移到目标数据集。比如,ImageNet中的图像大部分与椅子无关,但是在此数据集上训练的模型可以提取更通用的图像特征,这些特征可以帮助识别边缘,纹理,形状以及对象组成。这些特性可能对椅子同样有效。 本篇使用迁移学习中的一种常见技术:Fine-Tuning: 在源数据集上训练模型(源模型)。 创建一个新的模型,即目标模型。目标模型复制所有源模型中的结构以及参数。可以认为源模型参数中包含了从源数据集中学到的知识,并且将这些知识应用与目标数据集。 将满足目标数据集的输出层添加到目标模型上,并初始话输出层的参数。 使用目标数据在组装之后的模型上训练。从头开始训练输出层,而且它层的参数根据源模型参数进行微调。 Fine-Tuning实战:热狗识别 通过热狗识别的例子了解Fine-Tuning的用法。这里使用基于ImageNet数据集上训练的ResNet模型进行微调。这个热狗数据集包含千张图片,其中包含一些热狗的图片。通过微调而来的模型来识别图片中是否含有热狗。

Mxnet (29): AdaGrad算法

元气小坏坏 提交于 2020-10-03 10:51:46
1. 稀疏特征和学习率 在模型训练中会有稀疏特征(很少发生的特征),在自然语言模型中常见,比如,与 “学习”相比“预处理”更加少见。同时在其他领域也会用到,例如计算广告和个性化的协同过滤。因为只有少数人感兴趣的事情很多。长尾经济很受用。 在学习率下降的情况下,我们可能最终会遇到以下情况:常见特征的参数收敛到其最佳值相当快,而对于罕见特征,在确定最佳值之前,我们仍然缺乏足够频繁地观察它们的情况。换句话说,对于频繁使用的功能,学习率降低得太慢,对于不频繁使用的功能,学习率降低得太快。 解决此问题的一种可行方法是计算我们看到特定功能的次数,并将其用作调整学习率调度器。 2.AdaGrad算法 AdaGrad算法会使用一个小批量随机梯度 g t g_t g t ​ 通过 s t s_t s t ​ 累计过去梯度的方差: g t = ∂ w l ( y t , f ( x t , w ) ) , s t = s t − 1 + g t 2 , w t = w t − 1 − η s t + ϵ ⋅ g t . \begin{aligned} \mathbf{g}_t & = \partial_{\mathbf{w}} l(y_t, f(\mathbf{x}_t, \mathbf{w})), \\ \mathbf{s}_t & = \mathbf{s}_{t-1} + \mathbf{g}_t

Mxnet基础知识(一)

那年仲夏 提交于 2020-08-14 13:21:12
1. 基本数据结构   和pytorch等中的tensor类似,mxnet中的ndarray或者nd,用来操作矩阵或者张量数据。基本操作类似于Numpy, 支持计算,索引等。 创建矩阵 from mxnet import nd #或者 from mxnet import ndarray as nd #创建矩阵 x1 = nd.array([[ 1 , 2 ,], [ 3 , 4 ]]) x2 = nd.random.uniform( 1 , 10 , shape=( 3 , 3 )) # 3 * 3的矩阵 x3 = nd.random.randn( 2 , 3 ) # 2 * 3 的矩阵 x4 = nd.random.randint( 1 , 10 , shape=( 2 , 3 )) # 2 * 3 的矩阵 x5 = nd.ones(shape=( 2 , 2 )) # 2 * 2 的矩阵 x6 = nd.full(shape=( 2 , 3 ), val= 2 ) # 2 * 3 的矩阵, 值为2 print(x1.shape, x1.size, x1.dtype) #( 2 , 2 ) 4 < class ' numpy.float32 ' >   操作矩阵 x = nd.random.randn( 2 , 3 ) y = nd.random.randn( 2 , 3 )

【2万字干货】利用深度学习最新前沿预测股价走势

∥☆過路亽.° 提交于 2020-08-13 06:45:07
https://zhuanlan.zhihu.com/p/56509499 正文 在本篇文章中,我们将创建一个完整的程序来预测股票价格的变动。为此,我们将使用生成对抗性网络(GAN),其中LSTM是一种递归神经网络,它是生成器,而卷积神经网络CNN是鉴别器。我们使用LSTM的原因很明显,我们试图预测时间序列数据。为什么我们使用GAN,特别是CNN作为鉴别器?这是一个好问题,后面会有专门的部分介绍。 当然,我们将对每个步骤会进行详细的介绍,但最难的部分是GAN:成功训练GAN非常棘手的部分是获得正确的超参数集。因此,我们将使用贝叶斯优化(以及高斯过程)和深度强化学习(DRL)来决定何时以及如何改变GAN的超参数(探索与开发的两难境地)。在创建强化学习时,我们将使用该领域的最新进展,如Rainbow和PPO。 我们将使用许多不同类型的输入数据。随着股票的历史交易数据和技术指标,我们将使用NLP最新的进展(使用Bidirectional Embedding Representations from Transformers,BERT,一种传输学习NLP)创建情绪分析(作为基本分析的来源),傅里叶变换提取总体趋势方向,stacked autoencoders识别其他高级特征,寻找相关资产的特征组合,ARIMA用于股票函数的近似度等等,以便尽可能多地获取关于股票的信息、模式、相关性等

GluonCV 0.6: Embrace Video Understanding

女生的网名这么多〃 提交于 2020-08-12 00:06:41
GluonCV 0.6: Embrace Video Understanding Author: Yi Zhu , Applied Scientist at Amazon 视频理解一直是一个趋势性的研究课题,因为分析动态视频可以帮助我们开发更好的计算机视觉算法,从而产生更强的人工智能。然而,视频研究存在着数据量大、实验周期长、缺乏可重复的编码库、缺乏教程、边缘设备部署困难等诸多障碍。 在这个新版本中,GluonCV解决了上述限制。GluonCV现在完全支持最先进的视频分类算法和主要数据集。在发布的同时,我们还提供了新的快速视频阅读器、分布式培训支持、广泛的教程和可复制的基准测试。使用 GluonCV 可以轻松地学习、开发和部署视频理解模型,而不必太担心工程细节。 More Pre-Trained Models and Datasets 最近,FAIR刚刚开放了他们的PySlowFast代码库用于视频理解。与PySlowFast相比,GluonCV提供了对更多模型和数据集的支持。例如,这个版本涵盖了最先进的算法:s TSN , C3D , I3D , P3D , R2+1D , Non-local and SlowFast , 并支持4个最广泛的数据集: UCF101 , HMDB51 , Kinetics400 和 Something-Something-V2 .

Symbol API

泪湿孤枕 提交于 2020-08-11 16:28:42
mxnet的python api主要有两个包: Gluon api 和 Module api 。gluon api容易上手和debug,更加新手友好。因为 gluon主要依赖NDArray包 ,属于交互式编程,类似于python的array。而 Module api主要依赖于Symbol ,由于需要构建symbol graph,是非交互式的,虽不易debug,但是换来了高性能。尽管性能好,但也有一些限制。所以可以利用gluon快速迭代实现,然后转到symbol来更快的训练和推理(当然限制在于可能你的实现symbol无法支持)。 所有模块的API: https://mxnet.apache.org/versions/1.5.0/api/python/index.html Symbol and NDArray? 为何不利用已有的NDArray?NDArray可以像python一样交互式编程,Gluon就是基于NDArray,Gluon使用这种方法(在hybridization之前)允许灵活和可调试的网络。 MXNet提供了另一种符号式编程接口Symbol,需要先构建一个计算图,类似tensorflow,先建立placeholders用于输入和输出,然后编译这个计算图, 通过绑定到NDArrays后实现运行。Gluon也可以通过利用hybridization方法实现这种操作