2017-01-15 12 views
8

Chcę napisać plik * .txt z hiperparametrem sieci neuronowej i architekturą modelu. Czy jest możliwe zapisanie obiektu model.summary() do mojego pliku wyjściowego?Keras model.summary() obiekt na ciąg

(...) 
summary = str(model.summary()) 
(...) 
out = open(filename + 'report.txt','w') 
out.write(summary) 
out.close 

Zdarza się, że dostaję "Brak", jak widać poniżej.

Hyperparameters 
========================= 

learning_rate: 0.01 
momentum: 0.8 
decay: 0.0 
batch size: 128 
no. epochs: 3 
dropout: 0.5 
------------------------- 

None 
val_acc: 0.232323229313 
val_loss: 3.88496732712 
train_acc: 0.0965207634216 
train_loss: 4.07161939425 
train/val loss ratio: 1.04804469418 

Każdy pomysł, jak sobie z tym poradzić? Dzięki

+0

Nie rozumiem tego. najpierw "Brak" wydaje się być w środku pliku, ale 1) obcinasz plik podczas otwierania, a następnie zamykasz go (nie działa: zapomniałeś()). Czy możesz wydrukować swoje podsumowanie z poziomu programu? jeśli jest to "Brak", to problem jest gdzie indziej. –

+0

Dzięki za odpowiedź Jean, tak, zapomniałem(), ale mam to w oryginalnym kodzie, przepraszam. Chodzi o to, co to jest model.summary() w kerasach i jak go przekształcić na łańcuch, aby móc go zapisać w pliku? – lmpeixoto

+0

Miałem ten problem. Doszedłem do wniosku, że celem 'model.summary()' * jest * wyświetlanie wyników na ekranie. Nie tworzyć rzeczywistej treści tekstowej, którą można zapisać lub przypisać do zmiennej. Dlatego po wywołaniu funkcji zwraca 'Brak'. – jkdev

Odpowiedz

7

Z moją wersją Keras (2.0.6) i Python (3.5.0), to działa na mnie:

# Create an empty model 
from keras.models import Sequential 
model = Sequential() 

# Open the file 
with open(filename + 'report.txt','w') as fh: 
    # Pass the file handle in as a lambda function to make it callable 
    model.summary(print_fn=lambda x: fh.write(x + '\n')) 

ten wyprowadza następujące linie do pliku:

_________________________________________________________________ 
Layer (type)     Output Shape    Param # 
================================================================= 
Total params: 0 
Trainable params: 0 
Non-trainable params: 0 
_________________________________________________________________ 
+3

Nowość w wersji 2.0.6 – Huo

3

Natknąłem się na ten sam problem, jak również! Istnieją dwa możliwe obejścia:

to_json() Zastosowanie metody modelu

summary = str(model.to_json()) 

jest to Twoja sprawa powyżej.

przeciwnym razie zastosować metodę ASCII od keras_diagram

from keras_diagram import ascii 
summary = ascii(model) 
3

Jedną opcją, choć nie jest dokładnym zamiennikiem model.summary, jest wyeksportowanie konfiguracji modelu za pomocą model.get_config(). Od the docs:

model.get_config(): zwraca słownik zawierający konfigurację modelu. Model może być reinstantiated od jego konfiguracji poprzez:

config = model.get_config() 
model = Model.from_config(config) 
# or, for Sequential: 
model = Sequential.from_config(config) 
Powiązane problemy