-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🐛 find bug in TNCO env and the explain this env data struct #93
Comments
我想要对一个列表进行一种操作,例如: 第1个给定的顺序是 (0, 1), 那么我取列表s 索引为0 和 1 的两个元素进行相加,0+1 得到的结果 1 赋值给这两个元素,相当于我把这两个元素合并成一个元素了。 第2个给定的顺序是 (2, 3), 那么我取列表s 索引为2 和 3 的两个元素进行相加,2+3 得到的结果 5 赋值给这两个元素,相当于我把这两个元素合并成一个元素了。 第3个给定的顺序是 (0, 2), 那么我取列表s 索引为0 和 2 的两个元素进行相加,注意,由于这两个节点都被合并成新的元素了,因此不是计算 0+2,而是计算 1+5 得到的结果 6 赋值给这四个元素,相当于我把初始的这四个元素合并成一个元素了。 第4个给定的顺序是 (3, 4), 那么我取列表s 索引为3 和 4 的两个元素进行相加,注意,由于索引为3的元素被合并成新的元素了,因此不是计算 3+4,而是计算 6+4 得到的结果 10 赋值给这几个元素,相当于我把初始的这几个元素合并成一个元素了。 请帮我写成代码 下面是ChatGPT给出的答案:
最后果然得到想要的结果(修改了print 的位置):
根据 ChatGPT 的建议,在PyTorch实现相同的操作更简单,有:
|
张量收缩计算图解.pptx
#92
已经提交PR 92 去修复此BUG
https://github.com/AI4Finance-Foundation/ElegantRL_Solver/blob/52b4dc3ac5b8461772751a7294f5c9c10fdba5a5/rlsolver/rlsolver_learn2opt/tensor_train/TNCO_env.py#L269-L271
上面的代码有bug,这里想要修改 list中存放的指针的指向,但是最右边的等号是一个【赋值】操作,它让指针重新指向新的地址,这是不正确的。
应该修改成
举例:
初始化
arys = [torch.zeros(2) + i for i in range(5)]
,打印arys
修改指针指向
arys[0] = arys[1] = arys[2] = torch.zeros(2) -1
,打印arys
修改 arys[0],使用赋值操作
arys[0] = torch.zeros(2) + 0
。重新打印arys
,确认指针指向是否正确不能使用赋值操作改变指针指向的地址,应该用
arys[0][:] = torch.zeros(2) + 0
重新运行命令 修改指针指向
arys[0] = arys[1] = arys[2] = torch.zeros(2) -1
重新运行命令 修改 arys[0] 的赋值
arys[0][:] = torch.zeros(2) + 0
得到预期中的结果:
The text was updated successfully, but these errors were encountered: