Robię eksperymenty z TensorFlow i wpadłem w pułapkę. Próbuję użyć TF do oszacowania zmiany w modelu, a następnie albo zatrzymać, albo przywrócić model, w oparciu o wynikową zmianę w funkcji straty. Mam trudną część (warunkową kontrolę) zorientowałem się, ale utknąłem na czymś, co powinno być dość proste: nie mogę przechowywać tf.trainable_variables
dla iteracji, a następnie przywrócić ją w razie potrzeby.Jak mogę przywrócić Tensory do wartości z przeszłości, bez zapisywania wartości na dysku?
powiedzmy zbudować Op:
...
store_trainable_vars = []
for v in tf.trainable_variables():
store_trainable_vars.append(v)
...
Później, chcę przywrócić tf.trainable_variables
do wartości jaką miał kiedy to op ostatniego uruchomienia. chciałbym zrobić coś takiego:
def reject_move():
revert_state = []
for (v, s) in zip(tf.trainable_variables(), store_trainable_vars):
revert_state.append(tf.assign(v, s, name="revert_state"))
return(revert_state)
Oczywiście, ponownie oceni store_trainable_vars
, co z kolei linki do wartości bieżącej tf.trainable_variables()
, eliminując z revert_state
op. Potrzebuję sposobu na zapisanie i odzyskanie wartości Tensorów bez zwracania się do aktualnej wartości tych Tensorów. Coś jak
...
store_trainable_vars = []
for v in tf.trainable_variables():
store_trainable_vars.append(v.value_right_now())
...
gdzie v.value_right_now()
zwraca stałą, która nie ulegnie zmianie aż nadpisane.
Wiem, że mógłbym używać Saver, ale to rozwiązanie zapisuje na dysku, co jest niedopuszczalne dla tej aplikacji, ponieważ będzie działać w pętli treningowej.
Prawdopodobnie brakuje mi czegoś oczywistego - wszelkie wskazówki będą mile widziane.
Powinienem wyjaśnić: kiedy powiedziałem, że nie chcę pisać na dysku, to nie dlatego, że martwiłem się przestrzenią. To przechowywanie i przywracanie będzie występować, w najgorszym przypadku, przy każdej iteracji. Jest to kara za czas ucieczki z powrotem na dysk, którego próbuję uniknąć. Czy możesz edytować swoją odpowiedź, aby zamiast tego pokazać trywialne użycie 'tf.group' do przywracania wykresów? (lub po prostu link do takiego przykładu) –