Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow致密层比keras层序更差_Tensorflow_Keras - Fatal编程技术网

Tensorflow致密层比keras层序更差

Tensorflow致密层比keras层序更差,tensorflow,keras,Tensorflow,Keras,我尝试在倒立摆(类似于cart-pole)问题上训练一个agent,这是强化学习的基准。我使用神经拟合Q迭代算法,该算法使用多层神经网络来评估Q函数 我使用Keras.Sequential和tf.layers.dense来分别构建神经网络,并让所有其他东西保持不变。然而,Keras给了我一个很好的结果,tensorflow却没有。事实上,tensorflow根本不起作用,因为它的损失在增加,代理从训练中学不到任何东西 在这里,我给出了Keras的代码,如下所示 def build_model()

我尝试在倒立摆(类似于cart-pole)问题上训练一个agent,这是强化学习的基准。我使用神经拟合Q迭代算法,该算法使用多层神经网络来评估Q函数

我使用Keras.Sequential和tf.layers.dense来分别构建神经网络,并让所有其他东西保持不变。然而,Keras给了我一个很好的结果,tensorflow却没有。事实上,tensorflow根本不起作用,因为它的损失在增加,代理从训练中学不到任何东西

在这里,我给出了Keras的代码,如下所示

def build_model():
    model = Sequential()
    model.add(Dense(5, input_dim=3))
    model.add(Activation('sigmoid'))
    model.add(Dense(5))
    model.add(Activation('sigmoid'))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))
    adam = Adam(lr=1E-3)
    model.compile(loss='mean_squared_error', optimizer=adam)
    return model
而tensorflow版本是

class NFQ_fit(object):
"""
neural network approximator for NFQ iteration
"""

def __init__(self, sess, N_feature, learning_rate=1E-3, batch_size=100):

    self.sess = sess
    self.N_feature = N_feature
    self.learning_rate = learning_rate
    self.batch_size = batch_size

    # DNN structure
    self.inputs = tf.placeholder(tf.float32, [None, N_feature], 'inputs')
    self.labels = tf.placeholder(tf.float32, [None, 1], 'labels')
    self.l1 = tf.layers.dense(inputs=self.inputs,
                         units=5,
                         activation=tf.sigmoid,
                         use_bias=True,
                         kernel_initializer=tf.truncated_normal_initializer(0.0, 1E-2),
                         bias_initializer=tf.constant_initializer(0.0),
                         kernel_regularizer=tf.contrib.layers.l2_regularizer(1E-4),
                         name='hidden-layer-1')
    self.l2 = tf.layers.dense(inputs=self.l1,
                         units=5,
                         activation=tf.sigmoid,
                         use_bias=True,
                         kernel_initializer=tf.truncated_normal_initializer(0.0, 1E-2),
                         bias_initializer=tf.constant_initializer(0.0),
                         kernel_regularizer=tf.contrib.layers.l2_regularizer(1E-4),
                         name='hidden-layer-2')
    self.outputs = tf.layers.dense(inputs=self.l2,
                                   units=1,
                                   activation=tf.sigmoid,
                                   use_bias=True,
                                   kernel_initializer=tf.truncated_normal_initializer(0.0, 1E-2),
                                   bias_initializer=tf.constant_initializer(0.0),
                                   kernel_regularizer=tf.contrib.layers.l2_regularizer(1E-4),
                                   name='outputs')
    # optimization
    # self.mean_loss = tf.losses.mean_squared_error(self.labels, self.outputs)
    self.mean_loss = tf.reduce_mean(tf.square(self.labels-self.outputs))
    self.regularization_loss = tf.losses.get_regularization_loss()
    self.loss = self.mean_loss # + self.regularization_loss
    self.train_op = tf.train.AdamOptimizer(learning_rate=self.learning_rate).minimize(self.loss)

这两种型号是一样的。它们都有两个尺寸相同的隐藏层。我预计问题可能来自内核初始化,但我不知道如何解决它。

使用Keras非常好。如果您想要更好的TensorFlow集成,请查看。如果Keras(或tf.Keras)默认值工作得更好,那么没有特别的理由使用tf.layers


在这种情况下。因此,请考虑删除<代码> KeNelx初始化器< /C>参数,而不是问题(OR)中的显式截断的正常初始化。还在寻找答案吗