Извлечь аргумент None имеет недопустимый тип - PullRequest
0 голосов
/ 07 июня 2018

Я новичок в Tensorflow, поэтому терпите меня, пожалуйста, я следую этому учебнику и столкнулся с ошибкой, которую я не знаю, как исправить.Кто-нибудь может мне помочь?Заранее спасибо.

Это код, который я пытаюсь выполнить:

def train():
    model = Model()

    with tf.Graph().as_default():
        images, val_images, labels, val_labels = load_training_data()

        x = tf.placeholder(shape=[FLAGS.batch_size, IMAGE_SIZE, IMAGE_SIZE, 1], dtype=tf.float32, name='x')
        y = tf.placeholder(shape=[FLAGS.batch_size, NUM_LABELS], dtype=tf.float32, name='y')
        keep_prob = tf.placeholder(tf.float32, name='dropout_prob')
        global_step = tf.contrib.framework.get_or_create_global_step()

        logits = model.inference(x, keep_prob=keep_prob)
        loss = model.loss(logits=logits, labels=y)

        accuracy = model.accuracy(logits, y)
        summary_op = tf.summary.merge_all()
        train_op = model.train(loss, global_step=global_step)

        init = tf.global_variables_initializer()
        saver = tf.train.Saver()

        with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
            writer = tf.summary.FileWriter(FLAGS.summary_dir, sess.graph)
            print(writer)
            sess.run(init)
            for i in range(FLAGS.num_iter):

                offset = (i * FLAGS.batch_size) % (len(images) - FLAGS.batch_size)
                batch_x, batch_y = images[offset:(offset + FLAGS.batch_size), :], labels[
                                                                                  offset:(offset + FLAGS.batch_size), :]

                _, cur_loss, summary = sess.run([train_op, 
                                                 loss, 
                                                 summary_op],
                                                feed_dict={
                                                    x: batch_x, 
                                                    y: batch_y, 
                                                    keep_prob: 0.5
                                                })

                writer.add_summary(summary, i)

                print(i, cur_loss)
                if i % 1000 == 0:
                    validation_accuracy = accuracy.eval(feed_dict={x: val_images, y: val_labels, keep_prob: 1.0})
                    print('Iter {} Accuracy: {}'.format(i, validation_accuracy))

                if i == FLAGS.num_iter - 1:
                    saver.save(sess, FLAGS.checkpoint_file_path, global_step)

И это журнал ошибок:

TypeError                                 Traceback (most recent call last)
<ipython-input-72-8d21e7b24473> in <module>()
     49                     saver.save(sess, FLAGS.checkpoint_file_path, global_step)
     50 
---> 51 train()

<ipython-input-72-8d21e7b24473> in train()
     36                                                     x: batch_x,
     37                                                     y: batch_y,
---> 38                                                     keep_prob: 0.5
     39                                                 })
     40 

Мне также нужно добавить, чтоВ настоящее время я работаю над ноутбуком Kaggle, поэтому, если это повлияет, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 07 июня 2018

Похоже, что один из train_op, loss или summary_op равен None.

Вы не предоставили полный код, поэтому я не могу сказать больше.Проверьте соответствующие функции вашего Model класса.

Также при работе в среде ноутбука убедитесь, что вы выполнили все зависимые ячейки после внесения некоторых изменений.Например, вы можете попробовать выполнить все ячейки с самого начала.

...