【学习记录01】神经网络逼近股票收盘均价

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
tf.compat.v1.disable_eager_execution() #要想运行session必须加这句话
data=np.linspace(1,15,15) #linspace 用来赋值,15分成15份
endprice=np.array([2511.90,2538,2657,2686,2767,2780,2787,2822,2867,2889,2929,2989,2999,2890,2988])
beginprice=np.array([2438,2534,2682,2644,2743,2877,2646,2879,2899,2780,2987,2966,2899,2900,2920])
print (data)
plt.figure()
for i in range(0,15):
    # 1 柱状图
    dateone=np.zeros([2])
    dateone[0]=i;
    dateone[1]=i;
    priceone=np.zeros([2])
    priceone[0]=beginprice[i]
    priceone[1]=endprice[i]
    if endprice[i]>beginprice[i]:
        plt.plot(dateone,priceone,'r',lw=8)
    else:
        plt.plot(dateone,priceone,'g',lw=8)
# plt.show()
# A(15*1)*w1(1*10)+b1(1*10)=B(15*10)
# B(15*10)*w2(10*1)+b2(15*1)=C(15*1)
# 1 A B C
# A
datenormal=np.zeros([15,1])# np.zeros(),数组赋值全0
pricenormal=np.zeros([15,1])
for i in range(0,15):
    datenormal[i,0]=i/14.0;
    pricenormal[i,0]=endprice[i]/3000.0;
x=tf.compat.v1.placeholder(tf.float32,[None,1])
y=tf.compat.v1.placeholder(tf.float32,[None,1])

# B
w1=tf.Variable(tf.compat.v1.random_uniform([1,10],0,1))
b1=tf.Variable(tf.zeros([1,10]))
wb1=tf.matmul(x,w1)+b1 #计算隐藏层的wb1值
layer1=tf.nn.relu(wb1) #激励函数

# C
w2=tf.Variable(tf.compat.v1.random_uniform([10,1],0,1)) # 新版本中旧的session不能用就加 compat.v1.
b2=tf.Variable(tf.zeros([15,1]))
wb2=tf.matmul(layer1,w2)+b2
layer2=tf.nn.relu(wb2)

loss=tf.reduce_mean(tf.square(y-layer2)) # 计算标准差,也就是求不断逼近真实参数时所用的数据
train_step=tf.compat.v1.train.GradientDescentOptimizer(0.1).minimize(loss) #用梯度下降法不断逼近真实参数,0.1是梯度下降法的步伐大小 
with tf.compat.v1.Session() as sess:
    sess.run(tf.compat.v1.global_variables_initializer())
    for i in range(0,10000):
        sess.run(train_step,feed_dict={x:datenormal,y:pricenormal})
    # 经过51行的运算,得到一个训练后的 w1w2 b1b2,现在检测一下是否有效,
    #给一个新的输入层,通过输入层,加上训练后的wb,得到一个新的 预测值,放到layer2中,然后绘制出来,看和最初的原始图像是否相近或者一样
    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(data,predprice,'b',lw=1)
    plt.show()

这是赋值之后print的股价柱状图:

这是使用神经网络训练之后模型得到的股价逼近柱状图:
在这里插入图片描述

发布了2 篇原创文章 · 获赞 0 · 访问量 8

猜你喜欢

转载自blog.csdn.net/qq_41009183/article/details/105596158
今日推荐