Trenuję splotową sieć neuronową, aby klasyfikować obrazy w warunkach mgły (3 klasy). Jednak dla każdego z około 150 000 obrazów mam również cztery zmienne meteorologiczne, które mogą pomóc w przewidywaniu klas obrazów. Zastanawiałem się, jak mogę dodać zmienne meteorologiczne (np. Temperaturę, prędkość wiatru) do istniejącej struktury CNN, aby pomóc w klasyfikacji.
Jednym ze sposobów, o których już teraz myślę, jest utworzenie kolejnej (małej) sieci neuronowej ze sprzężeniem zwrotnym wzdłuż CNN, a następnie połączenie danych wyjściowych warstw CNN i ukrytych warstw sieci neuronowej bez obrazu w gęstej warstwie.
Drugi sposób, jaki mogłem wymyślić, to po prostu kontaktowanie tych funkcji z gęstą warstwą. Jednak w tym przypadku zmienne niebędące obrazami będą (myślę) tylko w stanie przewidywać liniowo.
Czy istnieją inne (lepsze) sposoby, aby funkcje nieobrazowe mogły zostać uwzględnione w modelu? A jaka byłaby wskazana metoda, biorąc pod uwagę ilość danych, które mam?
Innym pytaniem, jakie mam, jest to, czy powinienem odblokować warstwy splotowe podczas treningu z tymi funkcjami, które nie są obrazami? Te warstwy Resnet-18 (które zostały zainicjowane jako wstępnie przeszkolone w ImageNet) zostały już dokładnie dostrojone przy użyciu obrazów. Domyślam się, że powinienem je zamrozić i tylko odblokować gęstą warstwę, ponieważ tylko tutaj funkcje nie będące obrazami „kontaktują się” z funkcjami obrazu (nie wcześniej w CNN). Jeśli się mylę, proszę to powiedzieć!
Odpowiedzi:
Moje rozwiązanie jest jak twoja pierwsza rekomendacja, ale z niewielkimi zmianami.
W tej architekturze można użyć zwyczajowych funkcji kosztów.
źródło
Concatenate()
warstw?Concatenate()
czyconcatenate()
warstw? Nie umiem odróżnić