2015-12-18 24 views
12

TensorFlow như xây dựng nó một cách tốt đẹp để lưu trữ dữ liệu. Ví dụ này được sử dụng để lưu trữ dữ liệu MNIST trong ví dụ:TensorFlow tạo tập dữ liệu từ mảng numpy

>>> mnist 
<tensorflow.examples.tutorials.mnist.input_data.read_data_sets.<locals>.DataSets object at 0x10f930630> 

Giả sử có mảng đầu vào và đầu ra.

>>> x = np.random.normal(0,1, (100, 10)) 
>>> y = np.random.randint(0, 2, 100) 

Làm cách nào để chuyển đổi chúng trong tập dữ liệu tf?

Tôi muốn sử dụng các chức năng như next_batch

Trả lời

8

Đối tượng Dataset chỉ là một phần của hướng dẫn MNIST, không phải là thư viện TensorFlow chính.

Bạn có thể thấy nơi nó được định nghĩa ở đây:

GitHub Link

Các nhà xây dựng chấp nhận một hình ảnh và nhãn lập luận như vậy có lẽ bạn có thể vượt qua giá trị riêng của mình ở đó.

+0

Ok cảm ơn tôi đã nghi ngờ điều này. Tôi nghĩ rằng nó sẽ là một công cụ hữu ích như một phần của thư viện chính. AFAIK bất kỳ hoạt động lô trên mảng numpy đòi hỏi phải thực hiện một bản sao của dữ liệu. Điều này có thể dẫn đến một thuật toán chậm hơn – Donbeo

+0

Triết lý là TensorFlow chỉ nên là một thư viện toán học cốt lõi, nhưng các thư viện mã nguồn mở khác có thể cung cấp các abstractions bổ sung được sử dụng cho việc học máy. Tương tự như Theano có thư viện như Pylearn2 được xây dựng trên đầu trang. Nếu bạn muốn tránh các thao tác sao chép, bạn có thể sử dụng chức năng truy cập dữ liệu dựa trên hàng đợi chứ không phải là trình giữ chỗ cho ăn. –

+0

Tôi thấy điểm. Cảm ơn rất nhiều! – Donbeo

0

Cách khác, bạn có thể sử dụng hàm tf.train.batch() để tạo một lô dữ liệu và đồng thời loại bỏ việc sử dụng tf.placeholder. Tham khảo tài liệu để biết thêm chi tiết.

>>> images = tf.constant(X, dtype=tf.float32) # X is a np.array 
>>> labels = tf.constant(y, dtype=tf.int32) # y is a np.array 
>>> batch_images, batch_labels = tf.train.batch([images, labels], batch_size=32, capacity=300, enqueue_many=True) 
Các vấn đề liên quan