utilizar usarlo usar tensores programar porque español ejemplo documentacion con como python scope tensorflow

python - usarlo - tensorflow ejemplo español



Tensorflow: ¿cómo obtener un tensor por su nombre? (2)

Tengo problemas para recuperar un tensor por nombre, ni siquiera sé si es posible.

Tengo una función que crea mi gráfico:

def create_structure(tf, x, input_size,dropout): with tf.variable_scope("scale_1") as scope: W_S1_conv1 = deep_dive.weight_variable_scaling([7,7,3,64], name=''W_S1_conv1'') b_S1_conv1 = deep_dive.bias_variable([64]) S1_conv1 = tf.nn.relu(deep_dive.conv2d(x_image, W_S1_conv1,strides=[1, 2, 2, 1], padding=''SAME'') + b_S1_conv1, name="Scale1_first_relu") . . . return S3_conv1,regularizer

Quiero acceder a la variable S1_conv1 fuera de esta función. Lo intenté:

with tf.variable_scope(''scale_1'') as scope_conv: tf.get_variable_scope().reuse_variables() ft=tf.get_variable(''Scale1_first_relu'')

Pero eso me está dando un error:

ValueError: Under-sharing: Variable scale_1 / Scale1_first_relu no existe, no permitido. ¿Quería establecer la reutilización = Ninguna en VarScope?

Pero esto funciona:

with tf.variable_scope(''scale_1'') as scope_conv: tf.get_variable_scope().reuse_variables() ft=tf.get_variable(''W_S1_conv1'')

Puedo evitar esto con

return S3_conv1,regularizer, S1_conv1

pero no quiero hacer eso.

Creo que mi problema es que S1_conv1 no es realmente una variable, es solo un tensor. ¿Hay alguna manera de hacer lo que quiero?


Hay una función tf.Graph.get_tensor_by_name (). Por ejemplo:

import tensorflow as tf c = tf.constant([[1.0, 2.0], [3.0, 4.0]]) d = tf.constant([[1.0, 1.0], [0.0, 1.0]]) e = tf.matmul(c, d, name=''example'') with tf.Session() as sess: test = sess.run(e) print e.name #example:0 test = tf.get_default_graph().get_tensor_by_name("example:0") print test #Tensor("example:0", shape=(2, 2), dtype=float32)


Todos los tensores tienen nombres de cadenas que se pueden ver de la siguiente manera

[tensor.name for tensor in tf.get_default_graph().as_graph_def().node]

Una vez que conozca el nombre, puede obtener el Tensor usando <name>:0 (0 hace referencia al punto final que es algo redundante)

Por ejemplo, si haces esto

tf.constant(1)+tf.constant(2)

Usted tiene los siguientes nombres de Tensor

[u''Const'', u''Const_1'', u''add'']

Para que pueda obtener la salida de la suma como

sess.run(''add:0'')

Tenga en cuenta que esta parte no forma parte de la API pública. Los nombres de tensores de cadenas generados automáticamente son un detalle de implementación y pueden cambiar.