在状态尺寸变量下面的代码中-> state_dim被添加到(None,)。当我们已经将张量大小指定为可变的时,为什么还要添加它呢?
states = tf.placeholder('float32',(None,)+state_dim,name="states")
actions = tf.placeholder('int32',name="action_ids")
cumulative_rewards = tf.placeholder('float32', name="cumulative_returns")
在不知道确切上下文的情况下,很难回答。但通常在模型训练应用程序中,第一个维度是批处理大小的占位符,该变量通常在运行时才知道。但是,您正在处理的数据的维度通常是预定义的,需要将其编码到图中才能执行。
因此,如果state_dim
表示且图像的尺寸为(300, 300, 3),
,则所得占位符尺寸将变为(None, 300, 300, 3)
tf.placeholder
的尺寸为None
。在运行时,您可以传递具有任意大小值仅在该维度上的张量。例如,
states = tf.placeholder('float32', [None, 5])
意味着您可以将以下任意矩阵传递给states
但是如果任何固定尺寸与占位符的大小不匹配,则会出现错误。