Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多次迭代后,LSTM损失保持不变_Python_Tensorflow_Optimization_Lstm_Rnn - Fatal编程技术网

Python 多次迭代后,LSTM损失保持不变

Python 多次迭代后,LSTM损失保持不变,python,tensorflow,optimization,lstm,rnn,Python,Tensorflow,Optimization,Lstm,Rnn,谢谢你研究这个问题!:) 我试图训练一个LSTM网络,根据过去30天的股价预测谷歌未来10天的股价。我训练了LSTM,但即使经过200次迭代,损失也几乎没有减少。我怀疑这个问题可能是由于tf会话中的提要命令引起的。然而,我没有发现任何问题(可能是由于我的肤浅知识)。优化器似乎会刷新tf会话中的每个迭代 如果我对优化器使用的理解是错误的,如果我能就代码中可能出现的错误寻求建议,我将不胜感激 谢谢你的帮助 import pandas as pd import matplotlib.pyplot as

谢谢你研究这个问题!:)

我试图训练一个LSTM网络,根据过去30天的股价预测谷歌未来10天的股价。我训练了LSTM,但即使经过200次迭代,损失也几乎没有减少。我怀疑这个问题可能是由于tf会话中的提要命令引起的。然而,我没有发现任何问题(可能是由于我的肤浅知识)。优化器似乎会刷新tf会话中的每个迭代

如果我对优化器使用的理解是错误的,如果我能就代码中可能出现的错误寻求建议,我将不胜感激

谢谢你的帮助

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import sys
import csv
import random
import tensorflow as tf
from tensorflow.contrib import rnn

# Define data reader
def read_data(fname):
    with open(fname) as f:
        data = list(csv.reader(f))
        d_mat = np.array(data)
        d_trsp = np.transpose(d_mat)

        date = np.transpose(d_trsp[0])
        p_open = d_trsp[1]
        vol = d_trsp[6]
        chg = d_trsp[7]
        chg = [float(i) for i in chg]

        return vol, chg

vol, training_data = read_data('GOOGL.csv')

training_data = training_data[0:300]
print("Loading training data..")

#Split data for learning
ratio_train = 0.70
ratio_valid = 0.90-ratio_train
ratio_test = 0.10 #fixed at 10% of dataset

# Parameters
learning_rate = 0.005
training_iters = 100
display_step = 1
x_size = 30
y_size = 5
n_hidden = 256

# Variables
x = tf.placeholder("float", [265, x_size])
y = tf.placeholder("float", [265, y_size])

weights = {
    'out': tf.Variable(tf.random_normal([n_hidden, y_size]))
    }

biases = {
    'out': tf.Variable(tf.random_normal([y_size]))
    }

# Preprocess Data
def prod_data(data):
    x = []
    y = []

    iter = len(data)-x_size-y_size
    for i in range(0, iter):
        x.append(data[i:i+x_size])
        y.append(data[i+x_size+1: i+x_size+1+y_size])

    return x, y

a,b = prod_data(training_data)

# Define RNN architecture
def RNN(x, weights, biases):
    # Reshape x to [1, n_input]
    x = tf.reshape(x, [-1, x_size])
    x = tf.split(x, x_size, 1)

    rnn_cell = rnn.MultiRNNCell([rnn.BasicLSTMCell(n_hidden), rnn.BasicLSTMCell(n_hidden)])
    outputs, states = rnn.static_rnn(rnn_cell, x, dtype = tf.float32)

    return tf.matmul(outputs[-1], weights['out'] + biases['out'])

pred = RNN(x, weights, biases)

# Loss and Optimizer
cost = tf.reduce_mean((pred-y)**2)
optimizer = tf.train.RMSPropOptimizer(learning_rate = learning_rate).minimize(cost)

# Initialization
init = tf.global_variables_initializer()

# Launch Tensor graph
with tf.Session() as sess:
    sess.run(init)
    step = 0
    loss_total = 0
    loss_coll = []
    end_offset = len(training_data)-y_size-x_size-1  

    while step < training_iters:

        _, loss, model_pred = sess.run([optimizer, cost, pred], \
                                                feed_dict={x: a, y: b})

        # Update total loss and accuracy
        loss_total += loss
        loss_coll.append(loss)


        if (step+1) % display_step == 0:
            print("Loss at step " + str(step) + " = " + str(loss))
            loss_total = 0

        step += 1

    print("Optimization Finished!")
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
将numpy作为np导入
导入系统
导入csv
随机输入
导入tensorflow作为tf
从tensorflow.contrib导入rnn
#定义数据读取器
def读取数据(fname):
将open(fname)作为f:
数据=列表(csv.reader(f))
d_mat=np.数组(数据)
d_trsp=np.转置(d_mat)
日期=np.转置(d_trsp[0])
p_open=d_trsp[1]
vol=d_trsp[6]
chg=d_trsp[7]
chg=[chg中i的浮点数(i)]
返回卷,chg
vol,training\u data=读取数据('GOOGL.csv')
训练数据=训练数据[0:300]
打印(“加载培训数据…”)
#分割数据进行学习
传动比=0.70
传动比有效=0.90-传动比
比率_测试=0.10#固定在数据集的10%
#参数
学习率=0.005
培训费用=100
显示步骤=1
x_尺寸=30
y_尺寸=5
n_hidden=256
#变数
x=tf.placeholder(“float”[265,x_size])
y=tf.占位符(“浮动”[265,y_大小])
权重={
'out':tf.Variable(tf.random\u normal([n\u hidden,y\u size]))
}
偏差={
'out':tf.Variable(tf.random\u normal([y\u size]))
}
#预处理数据
def产品数据(数据):
x=[]
y=[]
iter=透镜(数据)-x_尺寸-y_尺寸
对于范围内的i(0,iter):
x、 追加(数据[i:i+x_大小])
y、 追加(数据[i+x\u大小+1:i+x\u大小+1+y\u大小])
返回x,y
a、 b=生产数据(培训数据)
#定义RNN体系结构
def RNN(x、重量、偏差):
#将x整形为[1,n_输入]
x=tf.重塑(x,[-1,x_大小])
x=tf.分割(x,x_大小,1)
rnn\u单元=rnn.MultiRNNCell([rnn.BasicLSTMCell(n\u隐藏),rnn.BasicLSTMCell(n\u隐藏)])
输出,状态=rnn.static\u rnn(rnn\u单元格,x,dtype=tf.float32)
返回tf.matmul(输出[-1],权重['out']+偏差['out'])
pred=RNN(x,权重,偏差)
#损失与优化
成本=tf.减少平均值((预测年)**2)
优化器=tf.train.RMSPropOptimizer(学习率=学习率)。最小化(成本)
#初始化
init=tf.global_variables_initializer()
#发射张量图
使用tf.Session()作为sess:
sess.run(初始化)
步长=0
总损失=0
损耗系数=[]
结束偏移=长度(训练数据)-y\U尺寸-x\U尺寸-1
当步骤<培训\u iters:
_,损失,模型_pred=sess.run([optimizer,cost,pred]\
feed_dict={x:a,y:b})
#更新总损失和准确度
损失总额+=损失
损失附加(损失)
如果(步骤+1)%display\u step==0:
打印(“在步骤中丢失”+str(步骤)+“=”+str(丢失))
总损失=0
步骤+=1
打印(“优化完成!”)

100步算不了什么。尝试数千次,看看问题是否仍然存在。此外,您可能还想指定“勉强”减少的损失是什么意思。感谢@xdurch0,事实证明这是学习率和使用的迭代次数的混合。找到了两者的平衡,损失也如预期的那样减少了:)