从数组中提供一个 tensorflow 占位符
Feeding a tensorflow placeholder from an array
我正在尝试使用 Q 学习训练 CatPole-v0。尝试根据经验更新重播缓冲区时出现以下错误:
ValueError: Cannot feed value of shape (128,) for Tensor 'Placeholder_1:0', which has shape '(?, 2)'
相关代码片段为:
def update_replay_buffer(replay_buffer, state, action, reward, next_state, done, action_dim):
# append to buffer
experience = (state, action, reward, next_state, done)
replay_buffer.append(experience)
# Ensure replay_buffer doesn't grow larger than REPLAY_SIZE
if len(replay_buffer) > REPLAY_SIZE:
replay_buffer.pop(0)
return None
要输入的占位符是
action_in = tf.placeholder("float", [None, action_dim])
有人可以阐明如何使用 action_dim 来解决此错误吗?
让我们从 action_in
:
开始
action_in = tf.placeholder("float", [None, action_dim])
这意味着 action_in
可以有像 (None, action_dim)
这样的形状,除此之外别无其他。并从错误:
ValueError: Cannot feed value of shape (128,) for Tensor 'Placeholder_1:0', which has shape '(?, 2)'
根据错误,您的 action_dim
似乎是 2
。
很容易看出您正在放置一个形状为 (128,)
的对象来代替张量,该张量期望形状像 (?, 2)
即 (None, 2)
.
所以你需要检查你的 feed_dict
那是你搞砸的地方。您的占位符 action_in
的尺寸应与您放入 feed_dict
.
的对象相匹配
Can someone clarify how action_dim should be used to resolve this
error?
您的环境的操作似乎有两个来自值 [=15=] 的组件,但您只提供了 one
组件,这是从您的错误 ((128,)
) 中推断出来的。你需要解决这个问题。希望这有帮助。
我正在尝试使用 Q 学习训练 CatPole-v0。尝试根据经验更新重播缓冲区时出现以下错误:
ValueError: Cannot feed value of shape (128,) for Tensor 'Placeholder_1:0', which has shape '(?, 2)'
相关代码片段为:
def update_replay_buffer(replay_buffer, state, action, reward, next_state, done, action_dim):
# append to buffer
experience = (state, action, reward, next_state, done)
replay_buffer.append(experience)
# Ensure replay_buffer doesn't grow larger than REPLAY_SIZE
if len(replay_buffer) > REPLAY_SIZE:
replay_buffer.pop(0)
return None
要输入的占位符是
action_in = tf.placeholder("float", [None, action_dim])
有人可以阐明如何使用 action_dim 来解决此错误吗?
让我们从 action_in
:
action_in = tf.placeholder("float", [None, action_dim])
这意味着 action_in
可以有像 (None, action_dim)
这样的形状,除此之外别无其他。并从错误:
ValueError: Cannot feed value of shape (128,) for Tensor 'Placeholder_1:0', which has shape '(?, 2)'
根据错误,您的 action_dim
似乎是 2
。
很容易看出您正在放置一个形状为 (128,)
的对象来代替张量,该张量期望形状像 (?, 2)
即 (None, 2)
.
所以你需要检查你的 feed_dict
那是你搞砸的地方。您的占位符 action_in
的尺寸应与您放入 feed_dict
.
Can someone clarify how action_dim should be used to resolve this error?
您的环境的操作似乎有两个来自值 [=15=] 的组件,但您只提供了 one
组件,这是从您的错误 ((128,)
) 中推断出来的。你需要解决这个问题。希望这有帮助。