tensorflow 학습 노트 의 간단 한 신경 망 훈련 과 테스트

2750 단어 tensorflow신경 망
본 논문 의 사례 는 간단 한 신경 망 으로 훈련 하고 테스트 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
tf 를 처음 공 부 했 을 때 우 리 는 간단 한 곳 에서 시작 했다.권 적 신경 망(CNN)은 간단 한 신경 망(NN)에서 발달 해 왔 기 때문에 우리 의 첫 번 째 예 는 신경 망 부터 다.
신경 망 은 볼 륨 기능 이 없고 간단 한 3 층 만 있다.입력 층,숨겨 진 층 과 출력 층 이다.
데 이 터 는 입력 층 에서 입력 하고 숨겨 진 층 에서 가중 변환 을 하 며 마지막 으로 출력 층 에서 출력 합 니 다.출력 할 때,우 리 는 softmax 를 사용 하여 회귀 할 수 있 으 며,출력 은 각 종류의 확률 값 에 속한다.극 객 대학의 그림 을 빌려 다음 과 같이 표시 한다.

그 중에서 x1,x2,x3 는 데 이 터 를 입력 하고 연산 을 거 친 후에 세 개의 데 이 터 를 얻어 특정한 유형의 확률 치 y1,y2,y3 에 속 하 는 것 을 얻 었 다.간단 한 공식 으로 다음 과 같이 표시 한다.

훈련 과정 에서 우 리 는 진실 한 결 과 를 예측 한 결과 에 비해(교차 엔트로피 비교 법)잔 차 를 얻 을 수 있다.공식 은 다음 과 같다.

y 는 우리 가 예측 한 확률 치 이 고 y 는 실제 값 이다.이 잔 차 는 작 을 수록 좋다.우 리 는 경사도 하강 법 을 사용 하여 W 와 b 의 수 치 를 끊임없이 바 꾸 어 잔 차 를 점점 작 게 만 들 고 마지막 에 최소 치 로 수렴 할 수 있다.이렇게 훈련 을 완성 하면 우 리 는 모델(W 와 b 의 최적화 치)을 얻 을 수 있다.
전체 코드 는 다음 과 같 습 니 다:

import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
x = tf.placeholder(tf.float32, [None, 784])
y_actual = tf.placeholder(tf.float32, shape=[None, 10])
W = tf.Variable(tf.zeros([784,10]))    #     W
b = tf.Variable(tf.zeros([10]))      #      b
y_predict = tf.nn.softmax(tf.matmul(x,W) + b)   #       softmax  ,      
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_actual*tf.log(y_predict),reduction_indies=1))  #    
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)  #            

correct_prediction = tf.equal(tf.argmax(y_predict,1), tf.argmax(y_actual,1))  #     ,       
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))        #          

init = tf.initialize_all_variables()
with tf.Session() as sess:
  sess.run(init)
  for i in range(1000):        #    ,  1000 
    batch_xs, batch_ys = mnist.train.next_batch(100)      #     ,  100   
    sess.run(train_step, feed_dict={x: batch_xs, y_actual: batch_ys})  #    
    if(i%100==0):         #   100 ,    
      print "accuracy:",sess.run(accuracy, feed_dict={x: mnist.test.images, y_actual: mnist.test.labels})

100 번 씩 훈련 하고 테스트 하 며 훈련 횟수 가 늘 어 나 면서 테스트 정밀도 도 높 아 지고 있다.훈련 이 끝 난 뒤 1W 행 데이터 테스트 의 평균 정밀 도 는 91%정도 로 그리 높 지 않 아 CNN 보다 높 지 않 을 것 이 분명 하 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기