我试图通过将一些代码从1.13转换为2.0来熟悉新的Tensorflow 2.0。我是Tensorflow的初学者,但我认为继续学习2.0而不是1.13可能是更好的选择。在
我已经尝试过转换脚本,但感觉它主要只是向相关部分添加tf.compat.v1
。
代码是A2C实现的一部分,参与者应该使用正态分布。我不太确定如何在TensorFlow2.0中实现这一部分,尤其是如何像原始代码中那样获得mu和sigma。在
原始代码如下:
def build_actor_net(self, scope, trainable):
with tf.variable_scope(scope):
dl1 = tf.contrib.layers.fully_connected(inputs=self.s, num_outputs=200,
activation_fn=tf.nn.relu,
trainable = trainable,
scope='dl1')
mu = 2 * tf.contrib.layers.fully_connected(inputs=dl1, num_outputs=self.num_action,
activation_fn=tf.nn.tanh,
trainable = trainable,
scope='mu')
sigma = tf.contrib.layers.fully_connected(inputs=dl1, num_outputs=self.num_action,
activation_fn=tf.nn.softplus,
trainable=trainable,
scope='sigma')
norm_dist = tf.contrib.distributions.Normal(loc=mu, scale=sigma)
return norm_dist
以下是我尝试过的:
^{pr2}$显然,self.actor.add(2 * keras.layers.Dense(512, activation='tanh'))
不会因为乘法而起作用。如何正确地将代码转换为版本2.0?在
tf.keras.Model
类的思想是在__init__
中定义您的层,您应该在call
中实现模型的前向传递。在在您的情况下:
相关问题 更多 >
编程相关推荐