tensorflow - tf.multinomial 输出数字范围以外的数字
问题描述
我正在使用 OpenAI 健身房环境(使用策略梯度)。我的网络正在输出高于可能动作范围的动作。
n_outputs = 9
learning_rate = 0.01
initializer = tf.variance_scaling_initializer()
X = tf.placeholder(tf.float32, shape=[None, 50, 70, 1])
network = tflearn.conv_2d(X, 32, 5, strides=2, activation='relu')
network = tflearn.max_pool_2d(network, 2)
network = tflearn.conv_2d(network, 32, 5, strides=2, activation='relu')
network = tflearn.max_pool_2d(network, 2)
network = tflearn.fully_connected(network, 256, activation='relu')
hidden = tf.layers.dense(network, 64, activation=tf.nn.relu, kernel_initializer=initializer)
logits = tf.layers.dense(hidden, n_outputs)
outputs = tf.nn.softmax(logits)
action = tf.multinomial(outputs, num_samples=1)
它输出 9,这会在健身房环境中产生错误。
完整的代码。
解决方案
如果 tf.multinomial 遇到数值错误,它将在范围之外进行采样,换句话说 - 你的图中有 NaN。
推荐阅读
- python - 从文本文件(例如:[[1,2],[3,4]])输入到python中的二维列表
- python - Python-带有列表元素列表的字典
- angular - 将注入服务的数组用于角度日历时,角度不会检测参考对象的变化
- python - 获取 pydoc help() 以忽略 reST (sphinx) 语法?
- arrays - 填充数组时引用匹配语句
- mysql - 语法错误:无法识别函数规范中“””附近的输入
- excel - 如何为 7 天内到期的项目设置要通过 Excel 发送的电子邮件?
- c# - 为什么 TimerTrigger 不要求基本 WebJobs SDK v3 主机应用程序中的存储帐户?
- c# - 无法循环第二个路径中的项目有权访问
- angular - 通过拖放到目标组件的导航标签上,组件之间的拖放列表传输