やりたいこと
下のモデルを動かす
試したこと
何をすればいいかわからない
とってきたコードだから詳しいこともわからない
とってきたのは結構前だから元どこかわからない 多分消えた
なぜCPUに移動させてないのに 勝手にGPUから移動してるのかわかる人教えてください
レイヤー定義 略 CNNと全結合 ここまでのレイヤーは正常に動きます self.L = nn.Linear(self.hidden_size, num_outputs ** 2) nn.init.kaiming_normal_(self.L.weight, a=0, mode='fan_in', nonlinearity='leaky_relu') self.tril_mask = Variable(torch.tril(torch.ones( num_outputs, num_outputs), diagonal=-1).unsqueeze(0)) self.diag_mask = Variable(torch.diag(torch.diag( torch.ones(num_outputs, num_outputs))).unsqueeze(0)) 動かすとき def forward(self,inputs,net): if net=="net_q": x, u = inputs x=torch.from_numpy(x).to(self.device) u=torch.from_numpy(u).to(self.device) x=x.permute(0 ,3, 1, 2) else: x = torch.from_numpy(inputs).to(self.device) x=x.permute(0 ,3, 1, 2) #------------------------------------ x=self.cnn1(x) x=x.contiguous().view(-1, 1).T x=self.net(x) 全結合 if net=="net_a": 略 これは正常に動きます おそらくこの下に原因 mu L V V_qはnn.Linear if net=="net_q": mu =self.mu(x) V=self.V(x)+-self.V_q(x) outputs = mu.size(1) L = self.L(x).view(-1,outputs,outputs) L = L * \ self.tril_mask.expand_as(L) + torch.exp(L) * self.diag_mask.expand_as(L) この上で行でエラー モデル定義 device = 'cuda' if torch.cuda.is_available() else 'cpu' print(device) mainQN = QNetwork(state.shape,action_size,device).to(device) optimizer = optim.Adam(mainQN.parameters(), lr=learning_rate) mainQN, optimizer = amp.initialize(mainQN, optimizer, opt_level="O1")#-------------- criterion = nn.MSELoss() targetQN = mainQN targetQN.eval()
--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-1-6a1a39906bca> in <module> 402 total_reward_vec = np.hstack((total_reward_vec[1:], episode_reward)) # 報酬を記録 403 if batch_size<len(memory.buffer*4): --> 404 memory_TDerror.update_TDerror(gamma,multireward_steps) 405 for _ in range(t): 406 trin.pioritized_experience_replay(batch_size, gamma,step=episode,state_size=state_,action_size=acthon,multireward_steps=multireward_steps) <ipython-input-1-6a1a39906bca> in update_TDerror(self, gamma, multireward_steps) 305 next_state=memory.buffer[i][0] 306 target = memory.buffer[i][2] + (gamma**multireward_steps) * targetQN.forward(next_state,"net_v")[0] --> 307 self.buffer[i] =target - mainQN.forward(inpp,"net_q")[0] 308 309 <ipython-input-1-6a1a39906bca> in forward(self, inputs, net) 197 L = L * \ 198 self.tril_mask.expand_as( --> 199 L) + torch.exp(L) * self.diag_mask.expand_as(L) 200 P = torch.bmm(L, L.transpose(2, 1)) 201 ~\Anaconda3\envs\pyflan\lib\site-packages\apex\amp\wrap.py in wrapper(*args, **kwargs) 56 args, 57 kwargs) ---> 58 return orig_fn(*new_args, **kwargs) 59 else: 60 raise NotImplementedError('Do not know how to handle ' + RuntimeError: expected device cuda:0 but got device cpu
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。