Variable
jest zasadniczo otoki na Tensor
który utrzymuje stan w wielu połączeń do run
i myślę, że sprawia, że pewne rzeczy łatwiej z oszczędności i wykresów przywracających. Zmienna musi zostać zainicjalizowana, zanim będzie można ją uruchomić. Podajesz wartość początkową, kiedy definiujesz zmienną, ale musisz wywołać jej funkcję inicjalizującą, aby faktycznie przypisać tę wartość w twojej sesji, a następnie użyć Zmiennej. Typowym sposobem na to jest z tf.global_variables_initalizer()
.
Na przykład:
import tensorflow as tf
test_var = tf.Variable([111, 11, 1])
sess = tf.Session()
sess.run(test_var)
# Error!
sess.run(tf.global_variables_initializer()) # initialize variables
sess.run(test_var)
# array([111, 11, 1], dtype=int32)
Jak, dlaczego używasz zmiennych zamiast tensorów, w zasadzie zmiennej jest tensora z dodatkowej możliwości i użyteczności. Możesz określić zmienną jako możliwą do trenowania (domyślnie, faktycznie), co oznacza, że twój optymalizator dostosuje ją, aby zminimalizować twoją funkcję kosztu; możesz określić, gdzie znajduje się Zmienna w systemie rozproszonym; możesz łatwo zapisywać i przywracać Zmienne i wykresy. Więcej informacji na temat używania zmiennych można znaleźć pod adresem here.
Dzięki! To ma więcej sensu. Rzeczywiście, nie zainicjowałem zmiennych. –