前提・実現したいこと
私は参考書「詳解 ディープラーニング, 巣籠 悠輔 著」を用いて学習している者です。今回実現したいことはPythonで深層学習の実装をtensorflowで行い、その際ニューラルネットワークのモデルの予測精度を比較する上で用いられるベンチマークテスト用のデータセットに、MNISTというものがありますが、そのデータを読み込んで実装していきたい。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "deep_tanh.py", line 13, in <module> mnist = datasets.fetch_mldata('MNIST original', data_home='.') : : TimeoutError: [WinError 10060] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした 。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。
該当のソースコード
Python
1import numpy as np 2import tensorflow as tf 3from sklearn import datasets 4from sklearn.model_selection import train_test_split 5from sklearn.utils import shuffle 6 7np.random.seed(0) 8tf.set_random_seed(123) 9 10''' 11データの生成 12''' 13mnist = datasets.fetch_mldata('MNIST original', data_home='.') 14 15n = len(mnist.data) 16N = 10000 # MNISTの一部を使う 17train_size = 0.8 18indices = np.random.permutation(range(n))[:N] # ランダムにN枚を選択 19 20X = mnist.data[indices] 21y = mnist.target[indices] 22Y = np.eye(10)[y.astype(int)] # 1-of-K 表現に変換 23 24X_train, X_test, Y_train, Y_test =\ 25 train_test_split(X, Y, train_size=train_size) 26 27''' 28モデル設定 29''' 30n_in = len(X[0]) # 784 31n_hidden = 200 32n_out = len(Y[0]) # 10 33 34x = tf.placeholder(tf.float32, shape=[None, n_in]) 35t = tf.placeholder(tf.float32, shape=[None, n_out]) 36 37# 入力層 - 隠れ層 38W0 = tf.Variable(tf.truncated_normal([n_in, n_hidden], stddev=0.1)) 39b0 = tf.Variable(tf.zeros([n_hidden])) 40h0 = tf.nn.tanh(tf.matmul(x, W0) + b0) 41 42# 隠れ層 - 隠れ層 43W1 = tf.Variable(tf.truncated_normal([n_hidden, n_hidden], stddev=0.1)) 44b1 = tf.Variable(tf.zeros([n_hidden])) 45h1 = tf.nn.tanh(tf.matmul(h0, W1) + b1) 46 47W2 = tf.Variable(tf.truncated_normal([n_hidden, n_hidden], stddev=0.1)) 48b2 = tf.Variable(tf.zeros([n_hidden])) 49h2 = tf.nn.tanh(tf.matmul(h1, W2) + b2) 50 51W3 = tf.Variable(tf.truncated_normal([n_hidden, n_hidden], stddev=0.1)) 52b3 = tf.Variable(tf.zeros([n_hidden])) 53h3 = tf.nn.tanh(tf.matmul(h2, W3) + b3) 54 55# 隠れ層 - 出力層 56W4 = tf.Variable(tf.truncated_normal([n_hidden, n_out], stddev=0.1)) 57b4 = tf.Variable(tf.zeros([n_out])) 58y = tf.nn.softmax(tf.matmul(h3, W4) + b4) 59 60cross_entropy = tf.reduce_mean(-tf.reduce_sum(t * tf.log(y), axis=1)) 61train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) 62 63correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(t, 1)) 64accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 65 66''' 67モデル学習 68''' 69epochs = 100 70batch_size = 200 71 72init = tf.global_variables_initializer() 73sess = tf.Session() 74sess.run(init) 75 76n_batches = (int)(N * train_size) // batch_size 77 78for epoch in range(epochs): 79 X_, Y_ = shuffle(X_train, Y_train) 80 81 for i in range(n_batches): 82 start = i * batch_size 83 end = start + batch_size 84 85 sess.run(train_step, feed_dict={ 86 x: X_[start:end], 87 t: Y_[start:end] 88 }) 89 90 # 訓練データに対する学習の進み具合を出力 91 loss = cross_entropy.eval(session=sess, feed_dict={ 92 x: X_, 93 t: Y_ 94 }) 95 acc = accuracy.eval(session=sess, feed_dict={ 96 x: X_, 97 t: Y_ 98 }) 99 print('epoch:', epoch, ' loss:', loss, ' accuracy:', acc) 100 101''' 102予測精度の評価 103''' 104accuracy_rate = accuracy.eval(session=sess, feed_dict={ 105 x: X_test, 106 t: Y_test 107}) 108print('accuracy: ', accuracy_rate) 109
試したこと
ニューラルネットワークの実装自体は上手くできているはずだが、問題は"データの生成"部分に記述した
mnist = datasets.fetch_mldata('MNIST original', data_home='.')
にある。
ここでfetch_mldataはhttp://mldata.org/にホストされているデータをダウンロードしているが、このサイトが何かしらの原因でサーバーエラーを起こしているためデータの取得ができない。
しかし同じデータを持つファイルが別にあり(既にダウンロード済み)、それをmldataディレクトリに置くと実行できるそうだが、やり方がよく分からない。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/06 14:59
2019/03/06 15:03
2019/03/06 16:02
2019/03/07 07:12