2016-05-10 32 views
5

Nếu tôi cố gắng để nhập khẩu một định nghĩa TensorFlow đồ lưu vớiLàm thế nào để tôi nhận được TensorFlow của 'import_graph_def' để quay lại tensors

import tensorflow as tf 
from tensorflow.python.platform import gfile 

with gfile.FastGFile(FLAGS.model_save_dir.format(log_id) + '/graph.pb', 'rb') as f: 
    graph_def = tf.GraphDef() 
    graph_def.ParseFromString(f.read()) 
x, y, y_ = tf.import_graph_def(graph_def, 
           return_elements=['data/inputs', 
               'output/network_activation', 
               'data/correct_outputs'], 
           name='') 

các giá trị trả lại không phải Tensor s như mong đợi, nhưng cái gì khác: thay vào đó, ví dụ , nhận x như

Tensor("data/inputs:0", shape=(?, 784), dtype=float32) 

tôi nhận được

name: "data/inputs_1" 
op: "Placeholder" 
attr { 
    key: "dtype" 
    value { 
    type: DT_FLOAT 
    } 
} 
attr { 
    key: "shape" 
    value { 
    shape { 
    } 
    } 
} 

Tức là, thay vì nhận được hàng rào dự kiến ​​x Tôi nhận được, x.op. Điều này làm tôi bối rối vì số documentation dường như nói rằng tôi sẽ nhận được một Tensor (mặc dù có một loạt các số hoặc ở đó khiến bạn khó hiểu).

Làm cách nào để nhận tf.import_graph_def trả về Tensor s cụ thể mà tôi có thể sử dụng (ví dụ: trong việc cho mô hình đã tải hoặc chạy phân tích)?

+0

Dòng thứ hai của mã nên được 'từ tensorflow.python.platform import gfile'. – tobe

Trả lời

3

Tên 'data/inputs', 'output/network_activation''data/correct_outputs' thực sự là tên hoạt động. Để có được tf.import_graph_def() trở tf.Tensor đối tượng, bạn nên thêm chỉ số sản lượng với tên hoạt động, mà thường là ':0' cho các hoạt động đơn đầu ra:

x, y, y_ = tf.import_graph_def(graph_def, 
           return_elements=['data/inputs:0', 
               'output/network_activation:0', 
               'data/correct_outputs:0'], 
           name='') 
Các vấn đề liên quan