with tutorial recognition neural network machine learning guide example python machine-learning tensorflow computer-vision deep-learning

python - tutorial - Tensorflow Slim: TypeError: se esperaba int32, obteniendo una lista que contiene los tensores del tipo ''_Message''



tensorflow tutorial pdf (4)

Encontré a la mayoría de las personas respondiendo mal. Es solo debido al cambio en el tf.concat. Funciona de la siguiente manera.

net = tf.concat(3, [branch_0, branch_1, branch_2, branch_3])

usa lo siguiente

net = tf.concat(values=[branch_0, branch_1, branch_2, branch_3],axis=3,)

Recuerde que al pasar los argumentos de la palabra clave deben estar antes que los demás.

Estoy siguiendo this tutorial para aprender TensorFlow Slim pero al ejecutar el siguiente código para Inception:

import numpy as np import os import tensorflow as tf import urllib2 from datasets import imagenet from nets import inception from preprocessing import inception_preprocessing slim = tf.contrib.slim batch_size = 3 image_size = inception.inception_v1.default_image_size checkpoints_dir = ''/tmp/checkpoints/'' with tf.Graph().as_default(): url = ''https://upload.wikimedia.org/wikipedia/commons/7/70/EnglishCockerSpaniel_simon.jpg'' image_string = urllib2.urlopen(url).read() image = tf.image.decode_jpeg(image_string, channels=3) processed_image = inception_preprocessing.preprocess_image(image, image_size, image_size, is_training=False) processed_images = tf.expand_dims(processed_image, 0) # Create the model, use the default arg scope to configure the batch norm parameters. with slim.arg_scope(inception.inception_v1_arg_scope()): logits, _ = inception.inception_v1(processed_images, num_classes=1001, is_training=False) probabilities = tf.nn.softmax(logits) init_fn = slim.assign_from_checkpoint_fn( os.path.join(checkpoints_dir, ''inception_v1.ckpt''), slim.get_model_variables(''InceptionV1'')) with tf.Session() as sess: init_fn(sess) np_image, probabilities = sess.run([image, probabilities]) probabilities = probabilities[0, 0:] sorted_inds = [i[0] for i in sorted(enumerate(-probabilities), key=lambda x:x[1])] plt.figure() plt.imshow(np_image.astype(np.uint8)) plt.axis(''off'') plt.show() names = imagenet.create_readable_names_for_imagenet_labels() for i in range(5): index = sorted_inds[i] print(''Probability %0.2f%% => [%s]'' % (probabilities[index], names[index]))

Parece que estoy recibiendo este conjunto de errores:

Traceback (most recent call last): File "DA_test_pred.py", line 24, in <module> logits, _ = inception.inception_v1(processed_images, num_classes=1001, is_training=False) File "/home/deepankar1994/Desktop/MTP/TensorFlowEx/TFSlim/models/slim/nets/inception_v1.py", line 290, in inception_v1 net, end_points = inception_v1_base(inputs, scope=scope) File "/home/deepankar1994/Desktop/MTP/TensorFlowEx/TFSlim/models/slim/nets/inception_v1.py", line 96, in inception_v1_base net = tf.concat(3, [branch_0, branch_1, branch_2, branch_3]) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/array_ops.py", line 1053, in concat dtype=dtypes.int32).get_shape( File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 651, in convert_to_tensor as_ref=False) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 716, in internal_convert_to_tensor ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/constant_op.py", line 176, in _constant_tensor_conversion_function return constant(v, dtype=dtype, name=name) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/constant_op.py", line 165, in constant tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape)) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_util.py", line 367, in make_tensor_proto _AssertCompatible(values, dtype) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_util.py", line 302, in _AssertCompatible (dtype.name, repr(mismatch), type(mismatch).__name__)) TypeError: Expected int32, got list containing Tensors of type ''_Message'' instead.

Esto es extraño porque todo este código es de su guía oficial. Soy nuevo en TF y cualquier ayuda sería apreciada.


Obtuve el mismo error cuando hice el trabajo.

encontre eso

logits = tf.nn.xw_plus_b(tf.concat(outputs, 0), w, b) loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits( labels=tf.concat(train_labels, 0), logits=logits))

La salida es la shape=(10, 64, 64) .

El código quiere salidas concat [0] a salidas [9] => obtener una nueva forma (640,64).

Pero la API "tf.concat" puede no permitir hacer esto.

(train_labels mismo a esto)

Entonces escribo a

A = tf.concat(0,[outputs[0],outputs[1]]) A = tf.concat(0,[A,outputs[2]]) A = tf.concat(0,[A,outputs[3]]) A = tf.concat(0,[A,outputs[4]]) A = tf.concat(0,[A,outputs[5]]) A = tf.concat(0,[A,outputs[6]]) A = tf.concat(0,[A,outputs[7]]) A = tf.concat(0,[A,outputs[8]]) A = tf.concat(0,[A,outputs[9]]) B = tf.concat(0,[train_labels[0],train_labels[1]]) B = tf.concat(0,[B,train_labels[2]]) B = tf.concat(0,[B,train_labels[3]]) B = tf.concat(0,[B,train_labels[4]]) B = tf.concat(0,[B,train_labels[5]]) B = tf.concat(0,[B,train_labels[6]]) B = tf.concat(0,[B,train_labels[7]]) B = tf.concat(0,[B,train_labels[8]]) B = tf.concat(0,[B,train_labels[9]]) logits = tf.nn.xw_plus_b(tf.concat(0, A), w, b) loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits( labels=tf.concat(0, B), logits=logits))

¡Puede funcionar!


Tengo el mismo problema cuando uso el 1.0 liberado y podría hacerlo funcionar sin tener que retroceder en una versión anterior.

El problema es causado por un cambio en la API. Esa discusión me ayudó a encontrar la solución: Grupo de Google> Cambios recientes de API en TensorFlow

Solo tienes que actualizar toda la línea con tf.concat

por ejemplo

net = tf.concat(3, [branch_0, branch_1, branch_2, branch_3])

debe cambiarse a

net = tf.concat([branch_0, branch_1, branch_2, branch_3], 3)

Nota:

Pude usar los modelos sin problema. Pero todavía tengo error después cuando quiero cargar el peso pre-entrenamiento. Parece que el módulo delgado sufrió varios cambios desde que crearon el archivo de punto de control. El gráfico creado por el código y el presente en el archivo de punto de control fueron diferentes.

Nota 2:

Pude usar los pesos pretrain para inception_resnet_v2 agregando a todos la capa biases_initializer=None


escribir explícitamente el nombre de los argumentos resuelve el problema.

en lugar de

net = tf.concat(3, [branch_0, branch_1, branch_2, branch_3])

utilizar

net = tf.concat(axis=3, values=[branch_0, branch_1, branch_2, branch_3])