Pregunta

Estoy tratando de aprender tensorflow, y pude entender cómo usa el lote en este ejemplo:

cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
sess.run(tf.initialize_all_variables())
for i in range(20000):
  batch = mnist.train.next_batch(50)
  if i%100 == 0:
    train_accuracy = accuracy.eval(feed_dict={
        x:batch[0], y_: batch[1], keep_prob: 1.0})
    print("step %d, training accuracy %g"%(i, train_accuracy))
  train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})

print("test accuracy %g"%accuracy.eval(feed_dict={
    x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))

Mi pregunta es por qué obtiene un lote de 50 datos de entrenamiento, pero solo usa el primero para el entrenamiento. Tal vez no entendí el código correctamente.

¿Fue útil?

Solución

Si lo entendí correctamente, está preguntando por esta línea de código:

train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})

Aquí solo especifica qué parte de Batch se usa para las características y cuál para su clase predicha.

Licenciado bajo: CC-BY-SA con atribución
scroll top