2017-01-23 39 views
6

Tôi muốn xây dựng và đào tạo mạng nơron bằng khung máy ảnh. Tôi cấu hình keras rằng nó sẽ sử dụng Tensorflow như một backend. Sau khi tôi đào tạo mô hình với keras, tôi đã cố gắng sử dụng Tensorflow chỉ. Tôi có thể truy cập vào phiên và lấy đồ thị tensorflow. Nhưng tôi không biết làm thế nào để sử dụng đồ thị tensorflow ví dụ để thực hiện một dự đoán.Cách sử dụng mô hình tensorflow được trích xuất từ ​​mô hình máy ảnh được đào tạo

tôi xây dựng một mạng lưới với các hướng dẫn sau đây http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/

trong phương pháp đào tạo() i xây dựng và đào tạo một mô hình sử dụng chỉ keras và lưu keras và mô hình tensorflow

trong eval() phương pháp

đây là Mã của tôi:

from keras.models import Sequential 
from keras.layers import Dense 
from keras.models import model_from_json 
import keras.backend.tensorflow_backend as K 
import tensorflow as tf 
import numpy 

sess = tf.Session() 
K.set_session(sess) 

# fix random seed for reproducibility 
seed = 7 
numpy.random.seed(seed) 

# load pima indians dataset 
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") 

# split into input (X) and output (Y) variables 
X = dataset[:, 0:8] 
Y = dataset[:, 8] 


def train(): 
    # create model 
    model = Sequential() 
    model.add(Dense(12, input_dim=8, init='uniform', activation='relu')) 
    model.add(Dense(8, init='uniform', activation='relu')) 
    model.add(Dense(1, init='uniform', activation='sigmoid')) 

    # Compile model 
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics['accuracy']) 

    # Fit the model 
    model.fit(X, Y, nb_epoch=10, batch_size=10) 

    # evaluate the model 
    scores = model.evaluate(X, Y) 
    print("%s: %.2f%%" % (model.metrics_names[1], scores[1] * 100)) 

    # serialize model to JSON 
    model_json = model.to_json() 
    with open("model.json", "w") as json_file: 
     json_file.write(model_json) 
    # serialize weights to HDF5 
    model.save_weights("model.h5") 

    # save tensorflow modell 
    saver = tf.train.Saver() 
    save_path = saver.save(sess, "model") 

def eval(): 
    # load json and create model 
    json_file = open('model.json', 'r') 
    loaded_model_json = json_file.read() 
    json_file.close() 
    loaded_model = model_from_json(loaded_model_json) 

    # load weights into new model 
    loaded_model.load_weights("model.h5") 

    # evaluate loaded model on test data 
    loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy']) 
    score = loaded_model.evaluate(X, Y, verbose=0) 
    loaded_model.predict(X) 
    print ("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*100)) 

    # load tensorflow model 
    sess = tf.Session() 
    saver = tf.train.import_meta_graph('model.meta') 
    saver.restore(sess, tf.train.latest_checkpoint('./')) 

    # TODO try to predict with the tensorflow model only 
    # without using keras functions 

tôi có thể truy cập vào đồ thị tensorflow (sess.graph) mà khung máy ảnh được xây dựng cho tôi nhưng tôi không biết làm thế nào tôi có thể dự đoán với đồ thị tensorflow. Tôi biết làm thế nào tôi có thể xây dựng một đồ thị tensorflow và dự đoán với nó trong generell nhưng không phải với các mô hình keras xây dựng cho tôi.

Trả lời

1

Bạn cần lấy các bộ tạo đầu vào và đầu ra từ định nghĩa mô hình Keras và sau đó là phiên TensorFlow hiện tại. Sau đó, bạn có thể đánh giá nó bằng cách sử dụng TensorFlow chỉ. Giả sử modelloaded_modelx là dữ liệu đào tạo của bạn.

sess = K.get_session() 
input_tensor = model.input 
output_tensor = model.output 

output_tensor.eval(feed_dict={input_tensor: x}, session=sess) 
Các vấn đề liên quan