专栏名称: 机器之心
专业的人工智能媒体和产业服务平台
目录
相关文章推荐
爱可可-爱生活  ·  【[62星]openai-realtime- ... ·  17 小时前  
财联社AI daily  ·  AI搜索“新贵”查询量增长超20% ·  昨天  
爱可可-爱生活  ·  [RO]《Pseudo-Simulation ... ·  2 天前  
爱可可-爱生活  ·  【[73星]FastPlaid:一款高性能多 ... ·  2 天前  
51好读  ›  专栏  ›  机器之心

自创数据集,使用TensorFlow预测股票入门

机器之心  · 公众号  · AI  · 2017-11-12 14:30

正文

请到「今天看啥」查看全文



执行加法的简单计算图


在上图中,两个零维张量(标量)将执行相加任务,这两个张量储存在两个变量 a 和 b 中。这两个值流过图形在到达正方形结点时被执行相加任务,相加的结果被储存在变量 c 中。实际上,a、b 和 c 可以被看作占位符,任何输入到 a 和 b 的值都将会相加到 c。这正是 TensorFlow 的基本原理,用户可以通过占位符和变量定义模型的抽象表示,然后再用实际的数据填充占位符以产生实际的运算,下面的代码实现了上图简单的计算图:


  1. # Import TensorFlow

  2. import tensorflow as tf

  3. # Define a and b as placeholders

  4. a = tf.placeholder(dtype=tf.int8)

  5. b = tf.placeholder(dtype=tf.int8)

  6. # Define the addition

  7. c = tf.add(a, b)

  8. # Initialize the graph

  9. graph = tf.Session()

  10. # Run the graph

  11. graph.run(c, feed_dict{a: 5, b: 4})



如上在导入 TensorFlow 库后,使用 tf.placeholder() 定义两个占位符来预储存张量 a 和 b。随后定义运算后就能执行运算图得出结果。


占位符


正如前面所提到的,神经网络的初始源自占位符。所以现在我们先要定义两个占位符以拟合模型,X 包含神经网络的输入(所有 S&P 500 在时间 T=t 的股票价格),Y 包含神经网络的输出(S&P 500 在时间 T=t+1 的指数值)。


因此输入数据占位符的维度可定义为 [None, n_stocks],输出占位符的维度为 [None],它们分别代表二维张量和一维张量。理解输入和输出张量的维度对于构建整个神经网络十分重要。


  1. # Placeholder

  2. X = tf.placeholder(dtype=tf.float32, shape=[None, n_stocks])

  3. Y = tf.placeholder(dtype=tf.float32, shape=[None])



以上代码中的 None 指代我们暂时不知道每个批量传递到神经网络的数量,所以使用 None 可以保持灵活性。我们后面会定义控制每次训练时使用的批量大小 batch_size。


变量


除了占位符,变量是 TensorFlow 表征数据和运算的另一个重要元素。虽然占位符在计算图内通常用于储存输入和输出数据,但变量在计算图内部是非常灵活的容器,它可以在执行中进行修改与传递。神经网络的权重和偏置项一般都使用变量定义,以便在训练中可以方便地进行调整,变量需要进行初始化,后文将详细解释这一点。


该模型由四个隐藏层组成,第一层包含 1024 个神经元,然后后面三层依次以 2 的倍数减少,即 512、256 和 128 个神经元。后面的层级的神经元依次减少就压缩了前面层级中抽取的特征。当然,我们还能使用其它神经网络架构和神经元配置以更好地处理数据,例如卷积神经网络架构适合处理图像数据、循环神经网络适合处理时序数据,但本文只是为入门者简要地介绍如何使用全连接网络处理时序数据,所以那些复杂的架构本文并不会讨论。


  1. # Model architecture parameters

  2. n_stocks = 500

  3. n_neurons_1 = 1024

  4. n_neurons_2 = 512

  5. n_neurons_3 = 256

  6. n_neurons_4 = 128

  7. n_target = 1

  8. # Layer 1: Variables for hidden weights and biases

  9. W_hidden_1 = tf.Variable(weight_initializer([n_stocks, n_neurons_1]))

  10. bias_hidden_1 = tf







请到「今天看啥」查看全文