#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 для инициализации переменных из списка.