2017-03-01 4 views
0

Ich muss Modell in Initialisierung laden und dann durch eine Funktion wieder verwenden. In meiner Architekturfunktion führe Vorhersagen von mehreren Datensätzen nach einem Modell durch und ich dachte, dass das Laden eines Modells von der Festplatte für jeden Datensatz keine gute Lösung ist.Laden Tensorflow-Modell und wiederverwenden es durch die anderen Funktionen

Ich brauche so etwas wie dies, dass Sharing-Sitzung (oder Modell) zwischen Funktionen:

def __init__(self): 
    self.graph = tf.Graph() 
    with self.graph.as_default(): 
     self.sess = tf.Session() 
     with sess.as_default(): 
      saver.restore(tf.get_default_session(), path_to_checkpoint) 

def some_func(): 
    with self.graph.as_default(): 
     with self.sess.as_default(): 
      self.sess.run() 

Gibt es eine richtige Art und Weise, dies zu tun?

Antwort

0

Sie können die Modellarchitektur definieren und ihre Gewichtungen als Klasse laden. Verwenden Sie es für verschiedene Datensätze in verschiedenen Funktionen.

class vgg16: 
def __init__(self, imgs, weights=None, sess=None): 
    self.imgs = imgs 
    self.convlayers() 
    self.fc_layers() 
    self.probs = tf.nn.softmax(self.fc3l) 
    if weights is not None and sess is not None: 
     self.load_weights(weights, sess) 

def convlayers(self): 
    self.parameters = [] 
     :: 
     :: 

if __name__ == '__main__': 
    sess = tf.Session() 
    imgs = tf.placeholder(tf.float32, [None, 224, 224, 3]) 
    vgg = vgg16(imgs, 'vgg16_weights.npz', sess) 

    # run inference here on multiple datasets 

prüfen: https://www.cs.toronto.edu/~frossard/vgg16/vgg16.py

Ist das hilft Ihnen?

Verwandte Themen