dequeはprint結果が嘘をついてなければ 一次元です
出ているエラーの意味が分かりません 単一の要素の整数ということは
np.sumはlistの要素の合計ではなく 入れた一つの数字をそのまま返すだけなんですか?
list dequeの要素の合計をだす関数はありませんか?わかる人教えてください
もしくは正しいsumの使い方がわかる人教えてください
追加してるところ #torchからnumpyに型を変えてます TD print結果[0.04558122] self.buffer.append(TD[0]) 試したコード p=memory_TDerror.buffer/np.sum(memory_TDerror.buffer) idx=np.random.choice(np.arange(len(memory_TDerror.buffer)), size=batch_size,replace=False,p=p) ただのsumでも同様のエラー
memory_TDerror.bufferのプリント結果 deque([0.048867036, 0.04883557, 0.048770107, 0.048671108, 0.04853942, 0.048376095, 0.04818251, 0.047960237, 0.0477111, 0.04743718, 0.04714063, 0.04682391, 0.046489548, 0.046140272, 0.0457788, 0.045408025, 0.045030855, 0.044650193, 0.04426902, 0.043890193, 0.043516655, 0.043151148, 0.04279647, 0.042455144, 0.042129703, 0.041822523, 0.041535787, 0.041271534, 0.041031655, 0.040817846, 0.040631555, 0.040474117, 0.040346622, 0.040249933, 0.040184755, 0.04015153, 0.0401505, 0.040181704, 0.04024497, 0.040339865, 0.040465776, 0.040621877, 0.040807124, 0.04102028, 0.041259866, 0.041524258, 0.041811615, 0.042119924, 0.042447004, 0.042790532, 0.04314801, 0.0435168, 0.043894205, 0.044277422, 0.04466352, 0.04504957, 0.045432527, 0.04580952, 0.046177484, 0.046533555, 0.046874855, 0.04719862, 0.047502182, 0.047783088, 0.04803901, 0.048267793, 0.04846752, 0.048636504, 0.04877331, 0.04887679, 0.048946057, 0.048980456, 0.048979715, 0.048943806, 0.04887302, 0.048767887, 0.048629317, 0.04845845, 0.048256636, 0.04802562, 0.04776726, 0.04748366, 0.047177166, 0.04685022, 0.046505485, 0.04614572, 0.04577385, 0.04539271, 0.04500537, 0.044614784, 0.04422401, 0.043836035, 0.043453738, 0.043080032, 0.0427177, 0.042369395, 0.042037617], maxlen=10000)
でてるエラー --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-4-f40d86d018aa> in <module> 427 multireward_steps=multireward_steps, 428 tau=tau, --> 429 mord_update=mord_update) 430 431 if done or t==max_number_of_steps - 1: <ipython-input-4-f40d86d018aa> in Double_R2D2_IQN_pioritized_Nstep_NAF_replay(self, batch_size, gamma, step, state_size, action_size, multireward_steps, tau, mord_update) 227 trin_x=list(range(batch_size)) 228 weights = torch.ones(batch_size,device='cuda:0') --> 229 p=memory_TDerror.buffer/np.sum(memory_TDerror.buffer) 230 print(memory_TDerror.buffer) 231 idx=np.random.choice(np.arange(len(memory_TDerror.buffer)), size=batch_size, ~\Anaconda3\envs\pyflan\lib\site-packages\torch\tensor.py in __rdiv__(self, other) 405 def __rdiv__(self, other): 406 if self.dtype.is_floating_point: --> 407 return self.reciprocal() * other 408 else: 409 return (self.double().reciprocal() * other).type_as(self) TypeError: only integer tensors of a single element can be converted to an index
回答1件
あなたの回答
tips
プレビュー