Python Keras vs.TensorFlow。超参数不相同?

Python Keras vs.TensorFlow。超参数不相同?,python,tensorflow,keras,conv-neural-network,Python,Tensorflow,Keras,Conv Neural Network,我正在转变为我自己的纯洁 不幸的是,有点不对劲。在我的脚本上进行的训练要快得多(如此之快,在某个地方可能会出现错误),而损失并没有改善。我想这和我的超参数有关。。。但我想不出来 我对术语有点困惑,samples\u pr\u epoch等等,但我想我已经掌握了。第二个for循环正确吗 有人知道有什么不同吗?这是在凯拉斯的掩护下吗 原始代码: 我的代码: 我会检查Keras和TensorFlow中Adam优化器的默认参数……而且,我不明白这意味着更快的速度意味着什么?坏吗?谢谢,我去看看。正常情况

我正在转变为我自己的纯洁

不幸的是,有点不对劲。在我的脚本上进行的训练要快得多(如此之快,在某个地方可能会出现错误),而损失并没有改善。我想这和我的超参数有关。。。但我想不出来

我对术语有点困惑,
samples\u pr\u epoch
等等,但我想我已经掌握了。第二个for循环正确吗

有人知道有什么不同吗?这是在凯拉斯的掩护下吗

原始代码: 我的代码:
我会检查Keras和TensorFlow中Adam优化器的默认参数……而且,我不明白这意味着更快的速度意味着什么?坏吗?谢谢,我去看看。正常情况下,训练网络需要几天时间,现在只需几分钟。损失也几乎没有减少,也许应该指出这一点。我认为这与Adam中的参数无关。它看起来是一样的。我会检查Keras和TensorFlow中Adam优化器的默认参数……而且,我不明白这意味着更快的速度意味着什么?坏吗?谢谢,我去看看。正常情况下,训练网络需要几天时间,现在只需几分钟。损失也几乎没有减少,也许应该指出这一点。我认为这与Adam中的参数无关。看起来一模一样。
def gen(hwm, host, port):
  for tup in client_generator(hwm=hwm, host=host, port=port):
    X, Y, _ = tup
    Y = Y[:, -1]
    if X.shape[1] == 1:  # no temporal context
      X = X[:, -1]
    yield X, Y

def get_model(time_len=1):
  ch, row, col = 3, 160, 320  # camera format

  model = Sequential()
  model.add(Lambda(lambda x: x/127.5 - 1., # Normalize
        input_shape=(ch, row, col),
        output_shape=(ch, row, col)))
  model.add(Convolution2D(16, 8, 8, subsample=(4, 4), border_mode="same"))
  model.add(ELU())
  model.add(Convolution2D(32, 5, 5, subsample=(2, 2), border_mode="same"))
  model.add(ELU())
  model.add(Convolution2D(64, 5, 5, subsample=(2, 2), border_mode="same"))
  model.add(Flatten())
  model.add(Dropout(.2))
  model.add(ELU())
  model.add(Dense(512))
  model.add(Dropout(.5))
  model.add(ELU())
  model.add(Dense(1))
  model.compile(optimizer="adam", loss="mse")

  return model

if __name__ == "__main__":

  tf.reset_default_graph()
  sess = tf.Session()

  model = get_model()

  model.fit_generator(
    gen(20, args.host, port=args.port), # Batch size 200
    samples_per_epoch=10000,
    nb_epoch=args.epoch,
    validation_data=gen(20, args.host, port=args.val_port), # Batch size 200
    nb_val_samples=1000
  )

  init = tf.global_variables_initializer()

  sess.run(init)
def gen(hwm, host, port):
  for tup in client_generator(hwm=hwm, host=host, port=port):
    X, Y, _ = tup
    Y = Y[:, -1]
    if X.shape[1] == 1:  # no temporal context
      X = X[:, -1]
    yield X, Y

def conv2d(x, W, s):
    return tf.nn.conv2d(x, W, strides=[1,s,s,1], padding="SAME")

def weight_variable(shape):
    return tf.Variable(tf.truncated_normal(shape, stddev=0.1))

def bias_variabel(shape):
    return tf.Variable(tf.constant(0.1, shape=shape))

def sig2d(x):
    return tf.nn.sigmoid(x, name='Sigmoid-normalization')


if __name__ == "__main__":

  tf.reset_default_graph()
  sess = tf.Session()

  xs = tf.placeholder(tf.float32, [None, 153600])
  x_image = tf.reshape(xs, [-1, 160, 320, 3])
  ys = tf.placeholder(tf.float32, [None, 1])

  x_image = tf.nn.sigmoid(x_image, name='Sigmoid-normalization')

    # conv1
  W_conv1 = weight_variable([8,8,3,16])
  b_conv1 = bias_variabel([16])
  h_conv1 = tf.nn.elu(conv2d(x_image, W_conv1, 4) + b_conv1)

    # conv2
  W_conv2 = weight_variable([5,5,16,32])
  b_conv2 = bias_variabel([32])
  h_conv2 = tf.nn.elu(conv2d(h_conv1, W_conv2, 2) + b_conv2)

    # conv3
  W_conv3 = weight_variable([5,5,32,64])
  b_conv3 = bias_variabel([64])
  h_conv3 = tf.nn.elu(conv2d(h_conv2, W_conv3, 2) + b_conv3)

    # flat1
  shape = h_conv3.get_shape().as_list()
  flat1 = tf.reshape(h_conv3, [-1, shape[1]*shape[2]* shape[3]])

    # drop1
  drop1 = tf.nn.dropout(flat1, 0.2)

    # elu1
  elu1 = tf.nn.elu(drop1)

    # dense1
  dense1 = tf.layers.dense(elu1, 512)

    # drop2
  drop2 = tf.nn.dropout(dense1, 0.5)

    # elu2
  elu2 = tf.nn.elu(drop2)

    # dense2
  output = tf.layers.dense(elu2, 1) # output

  loss = tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(ys, output))))

  train = tf.train.AdamOptimizer().minimize(loss,         

  sess.run(tf.global_variables_initializer())

  for i in range(args.epoch):
      for j in range(args.epochsize/args.batch_size):
          batch_xs, batch_ys = next(gen(20, args.host, port=args.port)) # Batch size 200  
          batch_xs = np.reshape(batch_xs,(-1,153600))
          sess.run(train, feed_dict={xs: batch_xs, ys: batch_ys})