• 神经网络逼近股票价格


      之前简单的看完视频教程,自己没有好好总结,没有去细究为什么要这样选择,只是模棱两可的灌输进去。今天小组成员大家一起讨论了一番,提出了很多细节上的问题,总结一番,发现很有收获,果然啊,一个人的思维还是太窄了。

      首先先说一下案例:输入[i for i in range(15)],预测price,数据就是15天的股票价格。这个案例非常简单,”特征“就是日期(也就是影响因素),但本身这样的预测是没有任何实用价值的。仅用于学习神经网络和tensoflow因此不必纠结于此。

      逻辑过程:

      

    x = tf.placeholder(tf.float32,[None,1])
    y = tf.placeholder(tf.float32,[None,1])
    
    # B
    w1 = tf.Variable(tf.random_uniform([1,10],0,1),dtype=tf.float32)
    b1 = tf.Variable(tf.zeros([1,10]))
    wb1 = tf.matmul(x,w1)+b1
    layer1 = tf.nn.relu(wb1) # 激活函数
    
    # C
    w2 = tf.Variable(tf.random_uniform([10,1],0,1),dtype=tf.float32)
    b2 = tf.Variable(tf.zeros([15,1]),dtype=tf.float32)
    wb2 = tf.matmul(layer1,w2)+b2
    layer2 = tf.nn.relu(wb2)
    
    loss = tf.reduce_mean(tf.square(y-layer2))
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for i in range(10000):
            sess.run(train_step,feed_dict={x:dateNormal,y:priceNormal})
        pred = sess.run(layer2,feed_dict={x:dateNormal})
        predPrice = np.zeros([15,1])
        for i in range(0,15):
            predPrice[i,0] = (pred*3000)[i,0]
        plt.plot(date,predPrice,'b',lw=1)
        
    plt.show()
    

      

    其中遇到的问题:

    1. 就是说隐藏层的节点数如何确定,发现确实只能使用经验法则,一般常用的公式:

    2. 矩阵相加np.zeros([15,10]) + np.zeros([1,10])违背线代,但是电脑自动补成[1*15,10]

    3. 归一化的问题,输入:np.array([i for i in range(15)])/14,预测y/3000.

     最常用的有最值归一化和均值标准差归一化。

    矩阵加减运算,np.expand_dims()增加维数,再进行加减

  • 相关阅读:
    go 接口
    jboss 7部署cas3.4.11
    HP LoadRunner 11 破解及license
    JBoss7快速入门
    jboss7的服务器开启和关闭命令
    proc/sys/net/ipv4/下各项的意义
    JAVA使用EPoll来进行NIO处理的方法(转)
    Java NIO类库Selector机制解析(下)
    Java NIO类库Selector机制解析(上)
    mysql 性能优化方向
  • 原文地址:https://www.cnblogs.com/zenan/p/9205598.html
Copyright © 2020-2023  润新知