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
用超算