2016-11-07 19 views
9

Có thể lấy tổng số bản ghi từ tệp .tfrecords không? Liên quan đến điều này, làm thế nào người ta thường theo dõi số lượng kỷ nguyên đã trôi qua trong khi các mô hình đào tạo? Mặc dù chúng tôi có thể chỉ định batch_sizenum_of_epochs, tôi không chắc liệu đơn giản là có được các giá trị chẳng hạn như current epoch, số lô trên mỗi epoch v.v ... để tôi có thể kiểm soát nhiều hơn cách đào tạo đang tiến triển. Hiện tại, tôi chỉ sử dụng một hack bẩn để tính toán điều này như tôi biết trước khi bàn tay có bao nhiêu hồ sơ có trong tập tin .tfrecords của tôi và kích thước của minibatches của tôi. Đánh giá cao bất kỳ trợ giúp nào ..Lấy tổng số bản ghi từ tệp .tfrecords trong Tensorflow

Trả lời

12

Để đếm số lượng bản ghi, bạn sẽ có thể sử dụng tf.python_io.tf_record_iterator.

c = 0 
for fn in tf_records_filenames: 
    for record in tf.python_io.tf_record_iterator(fn): 
    c += 1 

Để theo dõi đào tạo mô hình, tensorboard có ích.

+0

Cảm ơn bạn! tổng số của r ecords) thay vì lặp qua toàn bộ tập dữ liệu bằng cách sử dụng hàm 'tf_python_io.tf_record_iterator()' – user1050648

+1

Thật không may, không có siêu dữ liệu trong tệp tfrecords. Có một kích thước ở đầu mỗi bản ghi (chiều dài uint64, uint32 crc), nhưng nó là _within_ luồng nén, vì vậy bạn cần phải giải nén mọi thứ. Vì vậy, không có cách nào tốt để có được thông tin này. – drpng

+0

Tôi hiểu ... cảm ơn lần nữa! – user1050648

7

Không thể thực hiện được. TFRecord không lưu trữ bất kỳ siêu dữ liệu nào về dữ liệu được lưu trữ bên trong. Tệp này

đại diện cho một chuỗi các chuỗi (nhị phân). Định dạng không phải là ngẫu nhiên quyền truy cập, vì vậy, nó phù hợp để phát trực tuyến một lượng lớn dữ liệu nhưng không phù hợp với nếu bạn muốn xóa nhanh hoặc truy cập không tuần tự khác.

Nếu bạn muốn, bạn có thể lưu trữ siêu dữ liệu này bằng tay hoặc sử dụng một record_iterator để có được số lượng (bạn sẽ cần phải lặp qua tất cả các hồ sơ mà bạn có:

sum(1 for _ in tf.python_io.tf_record_iterator(file_name)) 

Nếu bạn muốn biết thời đại hiện tại, bạn có thể làm điều này hoặc từ thời đại hiện tại hoặc bạn có thể thực hiện điều này từ vòng lặp hoặc bằng cách in số từ vòng lặp

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