Chcę uzyskać wstępnie wytrenowany model VGG16 w Kerasie, usunąć jego warstwę wyjściową, a następnie umieścić nową warstwę wyjściową z liczbą klas odpowiadających mojemu problemowi, a następnie dopasować ją do nowych danych. Z tego powodu próbuję użyć tego modelu: https://keras.io/applications/#vgg16, ale ponieważ nie jest sekwencyjny, nie mogę po prostu model.pop()
. Wyskakiwanie z warstw i dodawanie go również nie działa, ponieważ w przewidywaniach wciąż oczekuje starego kształtu. Jak to zrobić? Czy istnieje sposób przekonwertowania tego typu modelu na Sequential
?Jak używać modeli z keras.applications do nauki transferu?
10
A
Odpowiedz
26
Można użyć pop()
na model.layers
, a następnie użyć model.layers[-1].output
do tworzenia nowych warstw.
Przykład:
from keras.models import Model
from keras.layers import Dense,Flatten
from keras.applications import vgg16
from keras import backend as K
model = vgg16.VGG16(weights='imagenet', include_top=True)
model.input
model.summary(line_length=150)
model.layers.pop()
model.layers.pop()
model.summary(line_length=150)
new_layer = Dense(10, activation='softmax', name='my_dense')
inp = model.input
out = new_layer(model.layers[-1].output)
model2 = Model(inp, out)
model2.summary(line_length=150)
Alternatywnie, można użyć include_top=False
opcję z tych modeli. W takim przypadku, jeśli chcesz użyć spłaszczenia warstwy, musisz również podać wartość input_shape
.
model3 = vgg16.VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
model3.summary(line_length=150)
flatten = Flatten()
new_layer2 = Dense(10, activation='softmax', name='my_dense_2')
inp2 = model3.input
out2 = new_layer2(flatten(model3.output))
model4 = Model(inp2, out2)
model4.summary(line_length=150)
Powiązane problemy
- 1. Karmienie danych obrazu w tensorflow do nauki transferu
- 2. Jak używać wtrysku zależnego od konstruktora do dostarczania modeli z kolekcji do ich modeli ViewModels?
- 3. Jak używać modeli Blendera w Javie?
- 4. Jak mogę używać właściwych modeli obiektowych w CodeIgniter z konstruktorami?
- 5. Szybkość transferu RabbitMQ przyspiesza?
- 6. Serwer SQL do transferu danych MySQL
- 7. Najlepszy samouczek do nauki SSIS
- 8. Jak używać niestandardowych atrybutów walidacji dla modeli potomnych jednostki DB?
- 9. Python: Dobre miejsce do nauki o "wieloprocesowości.
- 10. Jakie są dobre samouczki do nauki pycURL?
- 11. Dobre zasoby do nauki MacRuby
- 12. Blog do nauki Objective-C
- 13. zasoby do nauki dla mockito
- 14. Zasób do nauki generycznych Java?
- 15. Środowisko Oprawy specyficznych danych z Symfony + Nauki
- 16. Odsyłacz do gniazda sieciowego do nauki
- 17. Błąd protokołu transferu AdBooka Studio Studio
- 18. Jak uzyskać dostęp do modeli danych z widokiem na backbone.js
- 19. Zewnętrzna jednostka GPU do nauki maszynowej
- 20. Jak wyodrębnić wspólne named_scopes z modeli ActiveRecord
- 21. Poszukuję dobrego źródła do nauki ASP.NET MVC
- 22. Dobry zasób internetowy do nauki Direct Compute?
- 23. Importowanie modeli do projektu OpenGL
- 24. Dobre projekty do nauki OCaml i F #
- 25. Dodaj dodatkowe informacje do transferu danych PrimeNG FileUpload
- 26. Wymagania wstępne do nauki Język składania
- 27. Odtwarzanie najlepszych modeli modeli 2.0
- 28. Proste ćwiczenia do nauki nowego języka
- 29. Używanie wirtualnej maszyny do nauki zespołu
- 30. Książka do nauki pisania Clojure/Lisp Macros
To jest bardzo ważne! Rozwiązuje mój problem, z którym walczę od wielu godzin! Dziękuję Ci ! – user40780
Niewiarygodnie przydatne. Powinno to być w oficjalnej dokumentacji Keras. –