2017-02-12 4 views
0

ich mein Netzwerk trainiert und gespeichert, die endgültigen Gewichte als Zusammenfassungen wie diese wiederherzustellen:Wie Tensor Zusammenfassung auf eine Variable

# ... 
weights_summaries.append(tf.summary.tensor_summary('out-weights', weights['out'])) 
# ... write summary 

Jetzt möchte ich meine Klassifikator verwenden. Ich versuche, Gewichte aus der Zusammenfassung zu laden:

for e in tf.train.summary_iterator(summary_file): 
    for v in e.summary.value: 
     # ... 
     # found the node 
     elif v.node_name == 'out-weights': 
      weights['out'] = tf.Variable(v.tensor) 
      # it doesn't work! 
      weights['out'] = tf.Variable.from_proto(v) 
      # assert! 
      weights['out'] = tf.Variable.from_proto(v.tensor) 
      # assert! 
      weights['out'] = tf.Variable(tf.Tensor.from_proto(v.tensor)) 
      # Tensor.from_proto is not defined! 

Also, wie soll ich die Gewichte laden? Ich kenne den "globalen" Modellschoner, aber ich würde lieber nur die Daten speichern, die ich brauche.

Vielen Dank im Voraus, Alexander

Antwort

0

Endlich habe ich die Lösung gefunden:

def tensor_summary_value_to_variable(value): 
    fb = numpy.frombuffer(v.tensor.tensor_content, dtype = numpy.float32) 
    shape = [] 
    for d in v.tensor.tensor_shape.dim: 
     shape.append(d.size) 
    fb = fb.reshape(shape) 
    var = tf.Variable(fb) 
    return var 
0

Wenn Sie eine Teilmenge des Modells wollen, würde ich vorschlagen, dass Sie die var_list Parameter in den tf.train.Saverconstructor verwenden.

+0

Sie für den Vorschlag danken. Es wäre großartig, wenn es möglich wäre, Gewichte aus Zusammenfassungen wiederherzustellen, –

Verwandte Themen