有什么区别Model.train_批处理从keras和会话.运行来自tensorflow的([train_optimizer])?

2024-10-02 02:36:42 发布

您现在位置:Python中文网/ 问答频道 /正文

在神经网络训练的以下Keras和Tensorflow实现中,Keras实现中的model.train_on_batch([x], [y])与Tensorflow实现中的sess.run([train_optimizer, cross_entropy, accuracy_op], feed_dict=feed_dict)有何不同?特别是:这两条线如何在训练中导致不同的计算?公司名称:

keras公司_版本.py

input_x = Input(shape=input_shape, name="x")
c = Dense(num_classes, activation="softmax")(input_x)

model = Model([input_x], [c])
opt = Adam(lr)
model.compile(loss=['categorical_crossentropy'], optimizer=opt)

nb_batchs = int(len(x_train)/batch_size)

for epoch in range(epochs):
    loss = 0.0
    for batch in range(nb_batchs):
        x = x_train[batch*batch_size:(batch+1)*batch_size]
        y = y_train[batch*batch_size:(batch+1)*batch_size]

        loss_batch, acc_batch = model.train_on_batch([x], [y])

        loss += loss_batch
    print(epoch, loss / nb_batchs)

张量流_版本.py

^{pr2}$

注意:这个问题跟在Same (?) model converges in Keras but not in Tensorflow后面,这个问题被认为太宽泛了,但是我在这个问题中确切地说明了为什么我认为这两个陈述在某种程度上是不同的,并且导致了不同的计算。


Tags: ininputsizemodelontensorflowfeedbatch
1条回答
网友
1楼 · 发布于 2024-10-02 02:36:42

是的,结果可能不同。如果你事先知道以下几点,结果应该不会令人惊讶:

  1. 在Tensorflow和Keras中,corss-entropy的实现是不同的。Tensorflow假设tf.nn.softmax_cross_entropy_with_logits_v2的输入是原始的非规范化逻辑,而Keras接受输入作为概率
  2. Keras和Tensorflow中optimizers的实现是不同的。在
  3. 在这种情况下,您可能正在对数据进行无序处理,而传递的批处理的顺序可能不相同。虽然长时间运行模型并不重要,但最初的几个时期可能完全不同。确保将同一批传递给两者,然后比较结果。在

相关问题 更多 >

    热门问题