Wpis z mikrobloga

Miał ktoś z was może styczność z TensorFlow, a konkretnie z Estymatorem? Mam taki problem dotyczący uczenia sieci konwolucyjnej, a właściwie zbierania z niej danych. Ale do rzeczy:

Chcę zbierać wartości podczas uczenia modelu sieci co każdą epokę i w tym miejscu są dwie opcje:
1) używam funkcji trainandevaluate(), która uczy szybko jednak nie znalazłem możliwości zbierania danych funkcją evaluate co każdą epokę. Wszelkie źródła mówią o wywoływaniu funkcji co określony czas (time period).
2) Tworzę pętlę for epoch. i wywołuję za każdym razem train() z długością 1 i evaluate(). Tutaj jednak problem polega na tym, że jest to nieefektywne, bo co każde wywołanie model zapisuje i wczytuje się z dysku co trwa dość długo.

Istnieje jakaś opcja, żeby to przeskoczyć, ewentualnie funkcja o której nie mam pojęcia? Natknąłem się na klase tf.experiment jednak jest przestarzała (deprecated).

#python #machinelearning #it #programowanie #naukaprogramowania #programista15k
  • 3
@mojemirabelki: Tensorflow Estimator jest dość dziwnym stworzeniem, więc być może nie jest to w ogóle możliwe. Google zamierza go całkowicie zastąpić Kerasem, więc pewnie nie ma co czekać na poprawę sytuacji. Jeśli nie jesteś zmuszony tego używać, to pewnie warto poświęcić trochę czasu i po prostu przepisać kod.
Prostymi słowami, chcesz zbierać wagi modelu tak? Jeśli tak to do tego służy taki moduł jak callbacks. Możesz ustawić sobie zapis w dowolnej konfiguracji (tylko po co?) np. modelcnn{0}_{1}.format(epoch, lr)
@mrocznapszczola: już sobie poradziłem, ale dzięki za zainteresowanie. Nie, chciałem wywoływać funkcję evaluate() na innym zbiorze danych, co każdą epokę uczenia. Dało się to wcisnąć do wywołania uczenia w parametrze hooks funkcją InMemoryEvaluatorHook(), chociaż mam wrażenie, że ma problemy z wyświetlaniem. No i chyba zawiera metody z klasy contrib, która jest deprecated. To tak jakby ktoś kiedyś szukał informacji. ( ͡° ͜ʖ ͡°)