お世話になります。
タイトルのように詳解ディープラーニングに載っているp117の(3.76)の式を解いてもうまく分類直線を引くことができません。次に分類直線の求め方がイメージがつかない為、非線形の引き方もうまくいきません。このような問題はどのようにして解くのでしょうか?どうか教えください。
全体のコードです。
python
1 2import numpy as np 3import tensorflow as tf 4from sklearn.utils import shuffle 5import matplotlib.pyplot as plt 6import matplotlib.animation as animation 7%matplotlib notebook 8 9np.random.seed(0) 10tf.set_random_seed(0) 11 12M = 2 # 入力データの次元 13K = 3 # クラス数 14n = 100 # クラスごとのデータ数 15N = n * K # 全データ数 16 17X1 = np.random.randn(n, M) + np.array([0, 10]) 18X2 = np.random.randn(n, M) + np.array([5, 5]) 19X3 = np.random.randn(n, M) + np.array([10, 0]) 20Y1 = np.array([[1, 0, 0] for i in range(n)]) 21Y2 = np.array([[0, 1, 0] for i in range(n)]) 22Y3 = np.array([[0, 0, 1] for i in range(n)]) 23 24X = np.concatenate((X1, X2, X3), axis=0) 25Y = np.concatenate((Y1, Y2, Y3), axis=0) 26 27W = tf.Variable(tf.zeros([M, K])) 28b = tf.Variable(tf.zeros([K])) 29 30x = tf.placeholder(tf.float32, shape=[None, M]) 31t = tf.placeholder(tf.float32, shape=[None, K]) 32y = tf.nn.softmax(tf.matmul(x, W) + b) 33 34cross_entropy = tf.reduce_mean(-tf.reduce_sum(t * tf.log(y), axis=1)) 35train_step = tf.train.GradientDescentOptimizer(0.1).minimize(cross_entropy) 36 37correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(t, 1)) 38 39init = tf.global_variables_initializer() 40sess = tf.Session() 41sess.run(init) 42 43batch_size = 50 # ミニバッチサイズ 44n_batches = N // batch_size 45 46for epoch in range(20): 47 48 X_, Y_ = shuffle(X, Y) 49 50 for i in range(n_batches): 51 start = i * batch_size 52 end = start + batch_size 53 54 sess.run(train_step, feed_dict={ 55 x: X_[start:end], 56 t: Y_[start:end] 57 }) 58 59X_, Y_ = shuffle(X, Y) 60 61classified = correct_prediction.eval(session=sess, feed_dict={ 62 x: X_[0:10], 63 t: Y_[0:10] 64}) 65prob = y.eval(session=sess, feed_dict={ 66 x: X_[0:10] 67}) 68 69W1 = sess.run(W) 70B1 = sess.run(b) 71 72plt.plot(X1[:,0], X1[:, 1], 'o') 73plt.plot(X2[:,0], X2[:, 1], '^') 74plt.plot(X3[:,0], X3[:, 1], '*') 75
クラス1とクラス2の分類直線を求めるしき、
W11X1 + W12X2 + b1 = W21X1 + W22X2 + b2 (3.76) です。
宜しくお願いしたします。
回答1件
あなたの回答
tips
プレビュー