Почему я не могу запустить тензор и получил ошибку «переменная неинициализирована»

#python #tensorflow #keras #initialization #tensor

#python #тензорный поток #keras #инициализация #тензор

Вопрос:

Я использую tensorflow 1.15.0.

Я пытаюсь получить выходное значение уровня keras с помощью sess.run(). И я уверен, что я указал форму ввода слоя, и я мог видеть тензор вывода с правильной формой. Но когда я попытался получить значение тензора, возникли ошибки.

Вот код:

 import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

sess = tf.Session()
layer = layers.Dense(3)
x = tf.ones((1, 4))
y = layer(x)
layer.weights # I want to get weights value, print it first
  

Результат, как и ожидалось:

[<tf.Переменная ‘плотная / ядро: 0’ форма=(4, 3) dtype=float32>,
<tf.Переменная ‘плотная / смещение: 0’ форма =(3,) dtype=float32>]

Но когда я попытался получить значение тензора:

 sess.run(layer.weights[0])
  

Появляется очень длинное сообщение об ошибке: (следующее основное сообщение)

Ошибка ошибки при чтении переменной ресурса dense/kernel из контейнера: localhost. Это может означать, что переменная была неинициализирована. Не найдено: контейнер localhost не существует. (Не удалось найти ресурс: localhost / dense / kernel)

Может ли кто-нибудь помочь мне с этой проблемой? Спасибо.

Ответ №1:

Возможно, вам нужно инициализировать переменные (в плотном слое) перед их использованием, например, с помощью tf.global_variables_initializer . Попробуйте добавить следующую строку после объявления переменных, но перед их использованием:

 sess.run(tf.global_variables_initializer())
  

Вы также можете вызвать tf.variables_initializer для инициализации переменных из списка.