各位大神大家好,可不可以请各位大神帮我看一下,这个问题是怎么回事

def dqn1(n_episodes1=EPISODE_COUNT, eps_start1=1.0, eps_end1=0.01, eps_decay1=0.9995):
    scores1 = []
    for i_episode in range(1,n_episodes1+1):
        print("Episode" + str(i_episode))

        state = getState(stockData, 0, STATE_SIZE + 1)
        agent.inventory = []
        eps = eps_start1
     
        print(1)
        for t in range(l):
            print(2)
            action = agent.act(state,eps)
            print(1)
            next_state = getState(stockData, t + 1, STATE_SIZE + 1)
            reward = 0
            done = 1 if t == l - 1 else 0
            global loss
            loss = agent.step(state, action, reward, next_state, done)

            print("loss", + str(loss))
            scores1.append(loss)


    return scores1

            


def getState(data, t, n):
    d = t - n + 1
    block = data[d:t + 1]
    
    res = []

    for i in range(len(block) - 1):
        print("res=",res[i])
        res.append(block[i + 1]-block[i])
        #print("res=",res[i])
        return np.array([res])
    #return np.array([res])
if __name__== '__main__':
    print(1)
    stockData = []
    datas1 =xlrd.open_workbook(r'C:\Users\86138\Desktop\zi_ding_yi.xlsx',{'constant_memory':True})

    #datas1 = xlrd.open_workbook(r'C:\Users\86138\Desktop\zi_ding_yi.xlsx')
    print(2)
    table = datas1.sheets()[1]
    row_num = 1
    print(3)
    # for item in table[1:]:
    #      stockData.append(float(table.col_values(6)))
    while row_num <= 1000 :
      stockData.append(table.col_values(6))
    agent = Agent(state_size=STATE_SIZE, action_size=3)
    print(4)
    l = len(stockData) - 1

    # scores = dqn()
    scores1 =dqn1()

 

前面套了个深度学习的东西

错误的结果是:

C:\Users\86138\anaconda3\python.exe C:/Users/86138/Desktop/stockPrediction-master/yunfuzai_main.py
1
2
3
Traceback (most recent call last):
  File "C:/Users/86138/Desktop/stockPrediction-master/yunfuzai_main.py", line 106, in <module>
    agent = Agent(state_size=STATE_SIZE, action_size=3)
MemoryError

 

MemoryError是内存过界吗?那么遇到这种情况我该怎么修改呢?请各位大神帮一下我。

嗯嗯是内存过界了,可以尝试用虚拟内存扩大内存,可以参考网址:https://jingyan.baidu.com/article/636f38bb6af4ded6b9461043.html

前面得import gc
及时del掉没用的变量
循环末加一行gc.collect()
先检查一下你的python是多少位的,在shell中输入python,查看位数,如果是32位,那么就重装Python,装一个64位的,但同时你的库也需要重新装了。

扩大虚拟内存的方法(我的系统是win8,不过应该都大同小异):
1、打开 控制面板;
2、找到 系统 这一项;
3、找到 高级系统设置 这一项;
4、点击 性能 模块的 设置 按钮;
5、选择 高级面板,在 虚拟内存 模块点击更改;
6、记得 不要 选中“自动管理所有驱动器的分页文件大小”,然后选择一个驱动器,也就是一个盘,选中自定义大小,手动输入初始大小和最大值,当然,最好不要太大,更改之后能在查看盘的使用情况,不要丢掉太多空间。
7、都设置好之后,记得点击 “设置”, 然后再确定,否则无效,最后 重启电脑 就可以了。

 

 res.append(block[i + 1]-block[i])

这些地方

您绝对应该使用缓冲器对象buffer

用超算