質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.61%

tensorflow実行時のエラーメッセージの読み方が分かりません

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,230

score 10

前提・実現したいこと

tensorflowでリカレンスプロットの識別を行おうとしています。
超初心者です。

発生している問題・エラーメッセージ

Traceback (most recent call last):
File "conv.py", line 56, in <module>
dataset = Dataset()
File "conv.py", line 13, in init
data = np.loadtxt("data.csv")
File "/home/kitaji/tensorflow/lib/python2.7/site-packages/numpy/lib/npyio.py", line 1101, in loadtxt
for x in read_data(_loadtxt_chunksize):
File "/home/kitaji/tensorflow/lib/python2.7/site-packages/numpy/lib/npyio.py", line 1028, in read_data
items = [conv(val) for (conv, val) in zip(converters, vals)]
KeyboardInterrupt

該当のソースコード

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import numpy as np
import tensorflow as tf
from my_nn_lib import Convolution2D, MaxPooling2D, Conv2Dtranspose
from my_nn_lib import FullConnected, ReadOut, DropOut
np.random.seed(10)

class Dataset():
  def __init__(self):
    data = np.loadtxt("data.csv")
    np.random.shuffle(data)
    self.test_label, self.test_data = np.hsplit(data[0:2000],[2])  #
    #self.train_label, self.train_data = np.hsplit(data[1500:],[2])
    self.train = data[2000:] #

  def rand_mini_batch(self, n):
    np.random.shuffle(self.train)
    self.train_label, self.train_data = np.hsplit(self.train[0:],[2])
    data = self.train_data[0:n]
    label= self.train_label[0:n]
    return data, label

def mk_nn_model(x, y_):
    x_image = tf.reshape(x, [-1, 128, 128, 1])

    conv1 = Convolution2D(x_image, (64, 64), 1, 10, (5, 5))
    conv1_out = conv1.output()
    pool1 = MaxPooling2D(conv1_out)
    pool1_out = pool1.output()    

    conv2 = Convolution2D(pool1_out, (32, 32), 10, 20, (5, 5))
    conv2_out = conv2.output()
    pool2 = MaxPooling2D(conv2_out)
    pool2_out = pool2.output()    

    full1 = FullConnected(tf.reshape(pool2_out, [-1, 32*32*20]), 32*32*20, 100)
    full1_out = full1.output()
    drop = DropOut(full1_out, keep_prob)
    drop_out = drop.output()

    read = ReadOut(drop_out, 100, 2) #
    y = read.output()

    cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)), reduction_indices=[1]))
    correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

    return accuracy, cross_entropy, correct_prediction


if __name__ == '__main__':
  with tf.Graph().as_default():
    dataset = Dataset()
    tf.set_random_seed(10)

    # Variables
    x = tf.placeholder(tf.float32, [None, 16384])
    y_ = tf.placeholder(tf.float32, [None, 2]) 
    keep_prob = tf.placeholder(tf.float32)

    ac, ce, cor = mk_nn_model(x, y_)
    train_step = tf.train.AdamOptimizer(1e-4).minimize(ce)

    # Logging data for TensorBoard
    _ = tf.scalar_summary('cross entropy', ce)
    _ = tf.scalar_summary('accuracy', ac)

    init = tf.initialize_all_variables()
    # Train
    f = open('res_ac', 'w')
    f2 = open('res_ce', 'w')
    with tf.Session() as sess:
        ckpt = tf.train.get_checkpoint_state('./')
        saver = tf.train.Saver()
        writer = tf.train.SummaryWriter('/home/fuchida/tensorflow/fuchida/train', graph=sess.graph)
        if ckpt:
            last_model = ckpt.model_checkpoint_path
            print ('load ' + last_model)
            saver.restore(sess, last_model)
        else:
            sess.run(init)
            print('Training...')
            for i in range(50001):
                batch_xs, batch_ys = dataset.rand_mini_batch(30)
                #batch_xs, batch_ys = dataset.train_data, dataset.train_label
                feed = {x: batch_xs, y_: batch_ys, keep_prob: 0.5}
                train_step.run(feed_dict=feed)
                if i%100 == 0:
                    feed = {x: batch_xs, y_: batch_ys, keep_prob: 1.0}
                    summary_str, train_ac, train_ce = sess.run([tf.merge_all_summaries(), ac, ce], feed_dict=feed)
                    writer.add_summary(summary_str, i)
                    print('  step, accuracy, cross_entropy = %6d: %6.3f %6.3f' % (i, train_ac, train_ce))
                    f.write('%d, %f\n' % (i, train_ac))
                    f2.write('%d, %f\n' % (i, train_ce))
                    saver.save(sess, 'train', global_step = i)
                    if train_ac == 1.0:
                        break
            f.close()
            f2.close()
        # Test
        c = 0
        n = 0
        test_feed = {x: dataset.test_data, y_: dataset.test_label, keep_prob: 1.0}
        corect = sess.run(cor, feed_dict=test_feed)
        """
        for i in range(1500):
            if (corect[i] != 1):
                c += 1
                if (c < 30):
                    print('%d' %c)
                    print(corect[i])
                    print(dataset.test_label[i])
                    print(dataset.test_data[i])
                    print('\n')
            else:
                if (n < 30):
                    n += 1
                    print(corect[i])
                    print(dataset.test_label[i])
                    print(dataset.test_data[i])
                    print('\n')
        print('False count:', c);
        """
    print('test accuracy  = ', ac.eval(feed_dict=test_feed))

試したこと

パラメタの数値変更など

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+3

KeyboardInterrupt


上記エラーは「Ctrl+C」などでプログラムが使用者によって中止されたことを表します。おそらく中止しましたよね?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る