我的最终目标是通过将默认协方差乘以 0.01 来减小默认协方差。为了做到这一点,我决定创建一个简单的协方差(单位矩阵(,然后将这个矩阵乘以0.01,最后把它交给tf.contrib.distributions.MultivariateNormalFullCovariance函数。问题是当我事先不知道形状时,我无法初始化参数batch_shape。如何解决此问题?
我有以下代码:
self.state_in= tf.placeholder(shape=[None,s_size],dtype=tf.float32)
self.hidden = slim.fully_connected(self.state_in,h_size,biases_initializer=None,activation_fn=tf.nn.relu)
self.output = slim.fully_connected(self.hidden,a_size,activation_fn=None,biases_initializer=None)
mean= self.output
cov =tf.eye(4,batch_shape=[mean.shape[0]])
normal = tf.contrib.distributions.MultivariateNormalFullCovariance(
loc=mean,
covariance_matrix=cov*0.01)
这是它失败的行:cov =tf.eye(4,batch_shape=[mean.shape[0]])
类型错误: int 返回非int(类型 NoneType(
谢谢,提前。
答:省略batch_shape=[mean.shape[0]]
tf.contrib.distributions.MultivariateNormalFullCovariance
足够智能,可以处理批处理。
我打算删除这个问题,但也许有人会发现它很有用。
谢谢。