2016-02-26 32 views
10

Tôi đang cố gắng để đọc dữ liệu từ các tập tin CSV để tensorflow,Làm thế nào để đọc dữ liệu vào Tensorflow?

https://www.tensorflow.org/versions/r0.7/how_tos/reading_data/index.html#filenames-shuffling-and-epoch-limits

Mẫu mã trong tài liệu chính thức là như thế này:

col1, col2, col3, col4, col5 = tf.decode_csv(value, record_defaults=record_defaults) 

Để đọc các tập tin, tôi cần phải biết có bao nhiêu cột và dòng trong tệp trước và nếu có 1000 cột, tôi cần phải xác định 1000 biến như col1, col2, col3, col4, col5,..., col1000 ,, đây không phải là cách hiệu quả để đọc dữ liệu.

Câu hỏi của tôi

  1. cách tốt nhất để đọc các tập tin CSV vào Tensorflow là gì?

  2. Có cách nào để đọc Cơ sở dữ liệu (chẳng hạn như mongoDB) trong Tensorflow không?

Trả lời

5
  1. Bạn chắc chắn không cần phải xác định col1, col2, để col1000 ...

    thường, bạn có thể làm những việc như thế này:

    
    columns = tf.decode_csv(value, record_defaults=record_defaults) 
    features = tf.pack(columns) 
    do_whatever_you_want_to_play_with_features(features) 
    
  2. Tôi không biết cách nào để đọc trực tiếp dữ liệu từ MongoDB. Có lẽ bạn chỉ có thể viết một tập lệnh ngắn để chuyển đổi dữ liệu từ MongoDB theo định dạng mà Tensorflow hỗ trợ, tôi khuyên bạn nên sử dụng dạng nhị phân TFRecord, nhanh hơn nhiều so với bản ghi csv. This là một bài đăng trên blog tốt về chủ đề này. Hoặc bạn có thể chọn tự mình thực hiện trình đọc dữ liệu tùy chỉnh, xem the official doc tại đây.

2
def func() 
    return 1,2,3,4 

b = func() 

print b #(1, 2, 3, 4) 

print [num for num in b] # [1, 2, 3, 4] 

Hi không có gì để làm với tensorflow python đơn giản của nó không cần phải xác định năm 1000 biến. tf.decode_csv trả về một tuple.

Không có ý tưởng về xử lý cơ sở dữ liệu, tôi nghĩ bạn có thể sử dụng python và chỉ cần nhập dữ liệu dưới dạng mảng vào chuỗi lưu lượng.

Hy vọng điều này là hữu ích

1

tất nhiên bạn có thể thực hiện đọc trực tiếp lô ngẫu nhiên dữ liệu được đào tạo từ mongo đến nguồn cấp dữ liệu đến lưu lượng. dưới đây là cách của tôi:

 for step in range(self.steps): 


      pageNum=1; 
      while(True): 
       trainArray,trainLabelsArray = loadBatchTrainDataFromMongo(****) 
       if len(trainArray)==0: 
        logging.info("train datas consume up!") 
        break; 
       logging.info("started to train") 
       sess.run([model.train_op], 
         feed_dict={self.input: trainArray, 
            self.output: np.asarray(trainLabelsArray), 
            self.keep_prob: params['dropout_rate']}) 

       pageNum=pageNum+1; 

và cũng có thể bạn cần preprocess đào tạo dữ liệu trong MongoDB, chẳng hạn như: gán mỗi dữ liệu đào tạo về một giá trị kiểu ngẫu nhiên MongoDB ...

Các vấn đề liên quan