Convertir el tutorial de TensorFlow para trabajar con mis propios datos

Este es un seguimiento de mi última pregunta Conversión del dataframe de Pandas al objeto tensor TensorFlow

Ahora estoy en el siguiente paso y necesito más ayuda. Estoy tratando de reemplazar esta línea de código

batch = mnist.train.next_batch(100) 

Con un reemplazo para mis propios datos. He encontrado esta respuesta en StackOverflow: ¿De dónde viene next_batch en el tutorial TensorFlow batch_xs, batch_ys = mnist.train.next_batch (100)? Pero no entiendo

1) Por qué el .next_batch () no funciona en mi tensor. ¿Lo estoy creando incorrectamente?

2) Cómo implementar el pseudocódigo que se dio en la respuesta a la pregunta en .next_batch ()

Actualmente tengo dos objetos tensoriales, uno con los parámetros que deseo usar para entrenar el modelo (dataVar_tensor) y otro con el resultado correcto (depth_tensor). Obviamente, necesito mantener su relación para mantener la respuesta correcta con los parámetros correctos.

Por favor, ¿puede tomarse un tiempo para ayudarme a entender qué está pasando y reemplazar esta línea de código?

Muchas gracias

Quité las cosas no relevantes para preservar el formato y la sangría. Ojalá esté claro ahora. El siguiente código lee un archivo CSV en lotes de N líneas (N se especifica en una constante en la parte superior). Cada línea contiene una fecha (primera celda), luego una lista de flotadores (480 celdas) y un vector de un solo calor (3 celdas). El código luego simplemente imprime los lotes de estas fechas, flotadores y vectores de un solo calor a medida que los lee. El lugar donde los imprime es normalmente donde realmente ejecutaría su modelo y los alimentaría en lugar de las variables de marcador de posición.

Solo tenga en cuenta que aquí lee cada línea como una cadena y luego convierte las celdas específicas dentro de esa línea en flotadores, simplemente porque la primera celda es más fácil de leer como una cadena. Si todos sus datos son numéricos, simplemente configure los valores predeterminados en un float / int en lugar de una ‘a’ y deshágase del código que convierte las cadenas en flotantes. ¡No es necesario de otra manera!

Pongo algunos comentarios para aclarar lo que está haciendo. Déjame saber si algo no está claro.

 import tensorflow as tf fileName = 'YOUR_FILE.csv' try_epochs = 1 batch_size = 3 TD = 1 # this is my date-label for each row, for internal pruposes TS = 480 # this is the list of features, 480 in this case TL = 3 # this is one-hot vector of 3 representing the label # set defaults to something (TF requires defaults for the number of cells you are going to read) rDefaults = [['a'] for row in range((TD+TS+TL))] # function that reads the input file, line-by-line def read_from_csv(filename_queue): reader = tf.TextLineReader(skip_header_lines=False) # i have no header file _, csv_row = reader.read(filename_queue) # read one line data = tf.decode_csv(csv_row, record_defaults=rDefaults) # use defaults for this line (in case of missing data) dateLbl = tf.slice(data, [0], [TD]) # first cell is my 'date-label' for internal pruposes features = tf.string_to_number(tf.slice(data, [TD], [TS]), tf.float32) # cells 2-480 is the list of features label = tf.string_to_number(tf.slice(data, [TD+TS], [TL]), tf.float32) # the remainin 3 cells is the list for one-hot label return dateLbl, features, label # function that packs each read line into batches of specified size def input_pipeline(fName, batch_size, num_epochs=None): filename_queue = tf.train.string_input_producer( [fName], num_epochs=num_epochs, shuffle=True) # this refers to multiple files, not line items within files dateLbl, features, label = read_from_csv(filename_queue) min_after_dequeue = 10000 # min of where to start loading into memory capacity = min_after_dequeue + 3 * batch_size # max of how much to load into memory # this packs the above lines into a batch of size you specify: dateLbl_batch, feature_batch, label_batch = tf.train.shuffle_batch( [dateLbl, features, label], batch_size=batch_size, capacity=capacity, min_after_dequeue=min_after_dequeue) return dateLbl_batch, feature_batch, label_batch # these are the date label, features, and label: dateLbl, features, labels = input_pipeline(fileName, batch_size, try_epochs) with tf.Session() as sess: gInit = tf.global_variables_initializer().run() lInit = tf.local_variables_initializer().run() coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(coord=coord) try: while not coord.should_stop(): # load date-label, features, and label: dateLbl_batch, feature_batch, label_batch = sess.run([dateLbl, features, labels]) print(dateLbl_batch); print(feature_batch); print(label_batch); print('----------'); except tf.errors.OutOfRangeError: print("Done looping through the file") finally: coord.request_stop() coord.join(threads)