2016-12-28 6 views
4

Я загрузил код CIFAR10 из ссылки в учебнике here и пытаюсь запустить учебник. Я запускаю его с помощью командыТензорный поток cifar10 tutorial failed

python cifar10_train.py 

Он начинает нормально и загружает файл данных, как ожидалось. Когда он пытается открыть входной файл он терпит неудачу со следующим следом:

Traceback (most recent call last): 
    File "cifar10_train.py", line 120, in <module> 
    tf.app.run() 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 43, in run 
    sys.exit(main(sys.argv[:1] + flags_passthrough)) 
    File "cifar10_train.py", line 116, in main 
    train() 
    File "cifar10_train.py", line 63, in train 
    images, labels = cifar10.distorted_inputs() 
    File "/notebooks/Python Scripts/tensorflowModels/tutorials/image/cifar10/cifar10.py", line 157, in distorted_inputs 
    batch_size=FLAGS.batch_size) 
    File "/notebooks/Python Scripts/tensorflowModels/tutorials/image/cifar10/cifar10_input.py", line 161, in distorted_inputs 
    read_input = read_cifar10(filename_queue) 
    File "/notebooks/Python Scripts/tensorflowModels/tutorials/image/cifar10/cifar10_input.py", line 87, in read_cifar10 
    tf.strided_slice(record_bytes, [0], [label_bytes]), tf.int32) 
TypeError: strided_slice() takes at least 4 arguments (3 given) 

Конечно, когда я исследую код есть вызов в cifar10_input.py к strided_slice() только с 3 аргументами:

tf.strided_slice(record_bytes, [0], [label_bytes]) 

Принимая во внимание, что документация tensorflow действительно указывает, что должно быть не менее 4 аргументов.

Что происходит не так? Я загрузил последний tenorflow (0.12), и я запускаю ведущую ветвь кода cifar.

+1

Это может быть проблемой на их странице GitHub. Я посмотрел несколько версий назад, и все они требуют 4 аргумента. –

+0

Спасибо. Я добавил к обсуждению GitHub и получил решение (я думаю), которое я добавил ниже. Я все еще немного уверен, почему код находится в этом нерабочем состоянии, но, похоже, он работает в данный момент. – BobbyG

ответ

2

После некоторые обсуждения на github я поставил следующие изменения, в которых, кажется, чтобы сделать его работу:

В cifar10_input.py

- result.label = tf.cast(tf.strided_slice(record_bytes, [0], [label_bytes]), tf.int32) 
+ result.label = tf.cast(tf.slice(record_bytes, [0], [label_bytes]), tf.int32) 



- depth_major = tf.reshape(tf.strided_slice(record_bytes, [label_bytes], [label_bytes + image_bytes]),  [result.depth, result.height, result.width]) 
+ depth_major = tf.reshape(tf.slice(record_bytes, [label_bytes], [image_bytes]), [result.depth, result.height, result.width]) 

Тогда в обоих cifar10_input.py и cifar10.py я имел для поиска «устаревшего» и везде, где я его нашел, замените его на действительную функцию, основанную на том, что я прочитал в руководстве api (надеюсь, правильно). Примеры этого:

- tf.contrib.deprecated.image_summary('images', images) 
+ tf.summary.image('images', images) 

и

- tf.contrib.deprecated.histogram_summary(tensor_name + '/activations', x) 
- tf.contrib.deprecated.scalar_summary(tensor_name + '/sparsity', 
+ tf.summary.histogram(tensor_name + '/activations', x) 
+ tf.summary.scalar(tensor_name + '/sparsity', 

Вроде бы пыхтит счастливо в настоящее время. Я посмотрю, завершится ли он ОК, и если изменения, которые я ввел выше, дают нужные диагностические выходы.

Я все еще хотел бы услышать окончательный ответ от кого-то, ближе к коду.

Смежные вопросы