2017-11-13 5 views
0

ich zu trainieren bin versucht, speichern und ein tensorflow Modell laden tflearnTensorFlow: Cant Belastung trainiert Modell

 # Building convolutional network 

     network = input_data(shape=[None, imageSize, imageSize, 1], name='input') 
     network = conv_2d(network, imageSize, self.windowSize, activation='relu', regularizer="L2") 
     network = max_pool_2d(network, 2) 
     network = local_response_normalization(network) 
     network = conv_2d(network, imageSize * 2, self.windowSize, activation='relu', regularizer="L2") 
     network = max_pool_2d(network, 2) 
     network = local_response_normalization(network) 
     network = fully_connected(network, (dim4 * dim4) * (imageSize * 2), activation='tanh') 
     network = dropout(network, keep) 
     network = fully_connected(network, (dim4 * dim4) * (imageSize * 2), activation='tanh') 
     network = dropout(network, keep) 
     network = fully_connected(network, n_classes, activation='softmax') 
     network = regression(network, optimizer='adam', learning_rate=self.learningRate, 
           loss='categorical_crossentropy', name='target') 

     model = tflearn.DNN(network, tensorboard_verbose=0, tensorboard_dir='some/dir') 
     model.fit(

      {'input': np.array(myData.train_x).reshape(-1, self.imageSize, self.imageSize, 1)}, {'target': myData.train_y}, n_epoch=self.epochs, 

      validation_set=(
       {'input': np.array(myData.test_x).reshape(-1, self.imageSize, self.imageSize, 1)}, 
      {'target': myData.test_y}), 
     snapshot_step=100, show_metric=True, run_id='convnet') 
     model.save("some/path/model") 

Dieses Teil funktioniert mit. nächste, ich tue

 model_path = "some/path/model.meta" 

     if os.path.exists(model_path): 
      model.load(model_path) 
     else : 
      return "need to train the model" 

     prediction = self.model.predict([<some_input>]) 
     print(str(prediction)) 
     return prediction 

dies nicht gelingt bei model.load(model_path). Ich erhalte die folgenden Fehler

DataLossError (see above for traceback): Unable to open table file some/path/model.meta: Data loss: not an sstable (bad magic number): perhaps your file is in a different file format and you need to use a different restore operator? 
    [[Node: save_5/RestoreV2_4 = RestoreV2[dtypes=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_save_5/Const_0_0, save_5/RestoreV2_4/tensor_names, save_5/RestoreV2_4/shape_and_slices)]] 
Caused by op 'save_5/RestoreV2_4', defined at: 

verfolgen, was von

Data loss: not an sstable (bad magic number): perhaps your file is in a different file format and you need to use a different restore operator? 

gemeint ist, kann ich sehen, dass das Modell in die Tat richtig gespeichert und ist nicht eine leere Datei. Warum kann ich es nicht laden?

Versionsinformationen

tensorflow==1.4.0 
tensorflow-tensorboard==0.4.0rc2 
tflearn==0.3.2 
Python 3.6.3 :: Anaconda, Inc. 
+1

Nicht sicher Ort durch die gleiche „.ckpt“ Datei nehmen, aber model_path = ‚some/path/model.ckpt‘ –

+0

dank ich, dass versucht versuchen, aber es ist nicht in Ordnung – AbtPst

+1

funktioniert hat, was ich Das war "some/path/model.ckpt" zum Speichern und Wiederherstellen, und es funktionierte für mich. Haben Sie die Argumente zum Speichern und Wiederherstellen geändert? –

Antwort

1

ANTWORT:

Wie in den Kommentaren diskutiert, Der Weg Sie die Variablen speichern zu müssen „.ckpt“ Dateinamen enthalten.

ähnlich Wiederherstellung sollte

+0

Ich glaube nicht, dass das wahr ist. Es sieht so aus, als ob der an "model.save" übergebene Dateiname dem an "model.load" übergebenen entspricht. Schauen Sie sich zum Beispiel den Code unter http://tflearn.org/getting_started/#weights-persistence an – Stephen

Verwandte Themen