.to(dtype=torch.float32)を使ったのに flort64のままです(どこでflort64になったかも謎だけど)
なぜかわかる人教えてください
.to()で変えるんじゃないんですか?
正確には.torch.flort64 をtorch.float32にした後numpyに変換してます
.bufferに入れるとき
略 TD=target - mainQN.forward(inpp,"net_q").detach()[0] TD=abs(TD[0].to("cpu",dtype=torch.float32).detach().numpy().copy()) + 0.0001 self.buffer.append(TD) print(type(TD)) #<class 'numpy.float64'>
エラーが出てる場所
このクラスの.bufferはここしか使ってない
idx=np.random.choice(np.arange(len(memory_TDerror.buffer)), size=batch_size, replace=False,p = memory_TDerror.buffer/np.sum(memory_TDerror.buffer)) for i in idx: 省略 priority = rank_sum(torch.from_numpy(memory_TDerror.buffer[i]), self.alpha) weights.append((len(memory.buffer) * priority) ** (-self.beta))
出てるエラー
<class 'numpy.float64'> --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-1-8078e1751f1f> in <module> 430 trin.pioritized_experience_replay(batch_size, gamma,step=episode, 431 state_size=state_,action_size=acthon, --> 432 multireward_steps=multireward_steps) 433 trin.Done(episode) 434 mainQN.Done() <ipython-input-1-8078e1751f1f> in pioritized_experience_replay(self, batch_size, gamma, step, state_size, action_size, multireward_steps) 291 targets.append(memory.buffer[i][2].to("cuda:0")+(gamma ** multireward_steps)*targetQN.forward(memory.buffer[i][0],"net_v")) 292 --> 293 priority = rank_sum(torch.from_numpy(memory_TDerror.buffer[i]), self.alpha) 294 weights.append((len(memory.buffer) * priority) ** (-self.beta)) 295 weights = weights / weights.max() TypeError: expected np.ndarray (got numpy.float64)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。