首页 > 解决方案 > tf.eye 的参数 batch_shape 取决于占位符变量 shape

问题描述

我的最终目标是通过将默认协方差乘以 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]])

TypeError:int返回非int(类型NoneType)

提前致谢。

标签: pythontensorflow

解决方案


答:Omitbatch_shape=[mean.shape[0]] tf.contrib.distributions.MultivariateNormalFullCovariance足够聪明,可以处理批次。

我打算删除这个问题,但也许有人会发现它很有用。

谢谢。


推荐阅读