我目前正在设计一个 NoisyNet 层,正如这里所建议的:“Noisy Networks for Exploration”,在 Tensorflow 中并获得标题中所示的维数误差,而两个张量的维数要逐元素相乘filtered_output = keras.layers.merge.Multiply()([output, actions_input])应该(在原则)在打印所涉及的两个张量的维度时,根据打印输出彼此兼容,filtered_output并且actions_input,其中两个张量似乎都是维度shape=(1, 4)。
我在 Python3 中使用 Tensorflow 1.12.0。
相关代码如下所示:
import numpy as np
import tensorflow as tf
import keras
class NoisyLayer(keras.layers.Layer):
def __init__(self, in_shape=(1,2592), out_units=256, activation=tf.identity):
super(NoisyLayer, self).__init__()
self.in_shape = in_shape
self.out_units = out_units
self.mu_interval = 1.0/np.sqrt(float(self.out_units))
self.sig_0 = 0.5
self.activation = activation
self.assign_resampling()
def build(self, input_shape):
# Initializer
self.mu_initializer = tf.initializers.random_uniform(minval=-self.mu_interval, maxval=self.mu_interval) # Mu-initializer
self.si_initializer = tf.initializers.constant(self.sig_0/np.sqrt(float(self.out_units))) # Sigma-initializer
# …Run Code Online (Sandbox Code Playgroud)