나는 tensorflow에 상당히 익숙하며 일괄 처리를 사용하여 내 CSV 파일에서 트레이닝을 시도하고 있습니다.Tensorflow - 일괄 처리 문제
1.
내 csv 파일 : 여기
# initialize
sess = tf.Session()
sess.run(tf.global_variables_initializer())
# Start populating the filename queue.
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
# train my model
for epoch in range(training_epochs):
avg_cost = 0
total_batch = int(2193/batch_size)
for i in range(total_batch):
batch_xs, batch_ys = sess.run([train_x_batch, train_y_batch])
feed_dict = {X: batch_xs, Y: batch_ys}
c, _ = sess.run([cost, optimizer], feed_dict=feed_dict)
avg_cost += c/total_batch
print('Epoch:', '%04d' % (epoch + 1), 'cost =', '{:.9f}'.format(avg_cost))
coord.request_stop()
coord.join(threads)
내 질문입니다 :
여기에 읽기 csv 파일에 대한 내 코드의 일괄에게
filename_queue = tf.train.string_input_producer(
['BCHARTS-BITSTAMPUSD.csv'], shuffle=False, name='filename_queue')
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
# Default values, in case of empty columns. Also specifies the type of the
# decoded result.
record_defaults = [[0.], [0.], [0.], [0.], [0.],[0.],[0.],[0.]]
xy = tf.decode_csv(value, record_defaults=record_defaults)
# collect batches of csv in
train_x_batch, train_y_batch = \
tf.train.batch([xy[0:-1], xy[-1:]], batch_size=100)
을 만들고 여기에 훈련입니다 2193 개의 레코드가 있고 일괄 처리 크기는 100입니다. 그래서 내가 원하는 것은 이것입니다 : 모든 '신기원'에서 '첫 번째 레코드', 100 개의 레코드로 21 개의 일괄 처리, 93 개의 레코드로 이루어진 마지막 1 개의 일괄 처리를 수행합니다. 그래서 총 22 배치.
그러나 모든 배치의 크기가 100 인 것으로 나타났습니다. 또한, 그것은 두 번째 '신기원'에서 '첫 번째 기록'으로 시작하지 않습니다.
어떻게하면 레코드 크기 (이 경우 2193)를 얻을 수 있습니까? 하드 코딩해야하나요? 아니면 그것을 할 다른 현명한 방법이 있습니까? tendor.get_shape(). as_list()를 사용했지만 batch_xs에서는 작동하지 않습니다. 그냥 빈 모양 []을 반환합니다.
그래서 '레코드 수 (2193)'를 구할 수있는 방법은 없습니다. – BlakStar
'total_batch' 변수는'while' 루프의 끝에 2193 (또는 실제 레코드 수가 무엇이든간에)을 포함하게됩니다. – mrry
나는 오늘 그것을 runned ... 그리고 그것은 오류가 있습니다. 이것은 batch_xs의 모양 [7,100]이기 때문에 모양 [?, 7]을 가진 X에 공급할 수 없습니다. 나는 당신이 링크 한 가이드를 읽고 그것이 모양을 만들기위한 것임을 알아냅니다 [7,100]. 그러나 나는 왜 batch_xs가 [100,7] 대신 [7,100] 모양을 가지고 있는지 이해하지 못합니다. 그래서 제 훈련 모델을 바꾸어야합니까? 아니면 다른 방법이 있습니까? – BlakStar