2017-03-25 3 views
0

방금 ​​tensorflow를 사용하기 시작했으며 MNIST 데이터 세트의 튜토리얼 예제를 따랐습니다. 잘 됐어, 나는 90 % 정도의 정확도를 얻었다.내 자신의 get_next_minibatch가있는 tensorflow mnist 예제

그러나 next_batch을 내 버전으로 바꾼 후에 결과는 일반적으로 50 %보다 나빴습니다.

데이터 Tensorflow를 다운로드하고 구문 분석하는 대신이 website에서 데이터 세트를 다운로드합니다. numpy를 사용하여 원하는 것을 얻습니다.

df = pd.read_csv('mnist_train.csv', header=None) 
X = df.drop(0,1) 
Y = df[0] 
temp = np.zeros((Y.size, Y.max()+1)) 
temp[np.arange(Y.size),Y] = 1 
np.save('X',X) 
np.save('Y',temp) 

은 아무것도, 나는 원래 데이터의 인덱스를 내 자신의 get_mini_batch 셔플되어 바로 여기

x = tf.placeholder(tf.float32, shape=[None, 784]) 
y_ = tf.placeholder(tf.float32, shape=[None, 10]) 
X = np.load('X.npy') 
Y = np.load('Y.npy') 
X_test = np.load('X_test.npy') 
Y_test = np.load('Y_test.npy') 
BATCHES = 1000 


W = tf.Variable(tf.truncated_normal([784,10], stddev=0.1)) 

# W = tf.Variable(tf.zeros([784,10])) 
b = tf.Variable(tf.zeros([10])) 
y = tf.nn.softmax(tf.matmul(x, W) + b) 

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)) 
train_step = tf.train.GradientDescentOptimizer(0.05).minimize(cross_entropy) 

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 


sess = tf.InteractiveSession() 
tf.global_variables_initializer().run() 

를 변경하지 않습니다 다음 자습서를 다음, 테스트 데이터에 내가 도착 후마다 같은 일을 100 개의 데이터가 있는데, 이는 예제 코드와 똑같은 것처럼 보입니다. 유일한 차이점은 데이터의 일부가 꼬리에 버려진다는 것입니다.

제 버전이 튜토리얼보다 나쁘기 때문에 혼란 스럽습니다.

+0

데이터에서 X [0]을 출력합니다. 숫자는 0-255입니까? – lejlot

+0

네, X [0]은 헤더가 아니라 첫 번째 데이터 인스턴스를 포함합니다. – 7d9af0aec9

+1

헤더에 대해 생각하지 않고 MNIST는 일반적으로 [0, 1]에 값을 갖도록 표준화되어 있으므로 데이터가 "raw" "0-255라면 255로 나눌 수 있습니다. 네트워크에 들어가기 전에 – lejlot

답변

관련 문제