방금 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 개의 데이터가 있는데, 이는 예제 코드와 똑같은 것처럼 보입니다. 유일한 차이점은 데이터의 일부가 꼬리에 버려진다는 것입니다.
제 버전이 튜토리얼보다 나쁘기 때문에 혼란 스럽습니다.
데이터에서 X [0]을 출력합니다. 숫자는 0-255입니까? – lejlot
네, X [0]은 헤더가 아니라 첫 번째 데이터 인스턴스를 포함합니다. – 7d9af0aec9
헤더에 대해 생각하지 않고 MNIST는 일반적으로 [0, 1]에 값을 갖도록 표준화되어 있으므로 데이터가 "raw" "0-255라면 255로 나눌 수 있습니다. 네트워크에 들어가기 전에 – lejlot