python - 张量的 numpy.random.choice 语句的替代品是什么?
问题描述
我正在尝试实现一种学习算法,该算法具有以下代码块来选择具有概率分布的动作并使用np.random.choice
:
states.append(state)
probs = self.policy.forward(Variable(torch.from_numpy(state).float().unsqueeze(0)))
highest_prob_action = np.random.choice(self.num_actions, p=np.squeeze(probs.numpy()))
log_prob = torch.log(probs.squeeze(0)[highest_prob_action])
action_l.append(highest_prob_action)
我尝试使用torch.multinomial
如下:
highest_prob_action = np.random.choice(torch.multinomial(probs, self.num_actions).squeeze(0))
但它返回错误:
130 states.append(state)
131 probs = self.policy.forward(Variable(torch.from_numpy(state).float().unsqueeze(0)))
--> 132 highest_prob_action = np.random.choice(torch.multinomial(probs, self.num_actions).squeeze(0))
133 # highest_prob_action = np.random.choice(self.num_actions, p=np.squeeze(probs.numpy()))
134 log_prob = torch.log(probs.squeeze(0)[highest_prob_action])
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0
解决方案
推荐阅读
- javascript - 如何使用自定义 JS/Extension 在 Chrome 中解析 HTTP 响应数据
- r - 混合不同格式的数据
- java - 如何限制文本字段仅输入数字和小数?
- angular - NgRx 8 测试 provideMockStore - 状态切片的 setState
- analytics - 如何在 Apache Superset 中为自定义指标编写正确的 D3 字符串
- javascript - 如何使用javascript减少对象数组并从对象数组中获取值
- php - 有没有办法制作一个连接网站的二维码,但是为了让人们加入,他们必须为限时帐户支付费用?
- security - Keycloak:用户基于角色的客户端登录访问限制
- javascript - 在 Nuxt.Js 中为 document.title 添加一个观察者
- gtk - Gtk Z 排序混乱