Estou criando redes neurais com Tensorflow
e skflow
; por alguma razão, quero obter os valores de alguns tensores internos para uma determinada entrada, então estou usando myClassifier.get_layer_value(input, "tensorName")
, myClassifier
sendo a skflow.estimators.TensorFlowEstimator
.
Porém, acho difícil encontrar a sintaxe correta do nome do tensor, mesmo sabendo seu nome (e estou ficando confuso entre operação e tensores), então estou usando o tensorboard para plotar o gráfico e procurar o nome.
Existe uma maneira de enumerar todos os tensores em um gráfico sem usar tensorboard?
fonte
if "Variable" in n.op
no final da compreensão.Existe uma maneira de fazer isso um pouco mais rápido do que na resposta de Yaroslav usando get_operations . Aqui está um exemplo rápido:
fonte
tf.get_operations()
. A única operação que você pode obter.Vou tentar resumir as respostas:
Para obter todos os nós (tipo
tensorflow.core.framework.node_def_pb2.NodeDef
):Para obter todas as operações (tipo
tensorflow.python.framework.ops.Operation
):Para obter todas as variáveis (tipo
tensorflow.python.ops.resource_variable_ops.ResourceVariable
):Para obter todos os tensores (tipo
tensorflow.python.framework.ops.Tensor
) :fonte
tf.all_variables()
pode obter as informações que você deseja.Além disso, este commit feito hoje no TensorFlow Learn que fornece uma função
get_variable_names
no estimador que você pode usar para recuperar todos os nomes de variáveis facilmente.fonte
tf.global_variables()
all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02
Acho que isso também servirá:
Mas, em comparação com as respostas de Salvado e Yaroslav, não sei qual é a melhor.
fonte
A resposta aceita apenas fornece uma lista de strings com os nomes. Eu prefiro uma abordagem diferente, que dá a você acesso (quase) direto aos tensores:
list_of_tuples
agora contém todos os tensores, cada um dentro de uma tupla. Você também pode adaptá-lo para obter os tensores diretamente:fonte
Uma vez que o OP pediu a lista dos tensores em vez da lista de operações / nós, o código deve ser um pouco diferente:
fonte
As respostas anteriores são boas, gostaria apenas de compartilhar uma função de utilidade que escrevi para selecionar tensores de um gráfico:
Então, se você tiver um gráfico com ops:
Então correndo
retorna:
fonte
Isso funcionou para mim:
fonte