"Tensorflow 구글 목소리가 학습 프레임 워크"장 V의 mnist 디지털 식별 문제

MNIST 데이터 처리

그것은 훈련 데이터로 60,000 데이터, 테스트 데이터 10,000 데이터를 포함합니다. 데이터가 각각의 화상은 0-9의 수를 표시 설정, 이미지 크기는 28 * 28, 오른쪽 숫자는 픽처의 중앙에있다. tensorflow는 MNIST 데이터를 처리하는 클래스를 제공합니다.

한 핫 엔코딩

또한 효율적인 코딩으로 알려진 한 핫 엔코딩은 주로 N 비트 상태는 N 상태를 인코딩하는 레지스터 사용하고 한 번에 하나의 유효하다. 한 핫 인코딩은 바이너리 범주 변수 벡터로 표현된다. 이 분류 값이 정수 값으로 매핑됩니다 필요합니다. 그 다음, 정수 값들의 각각은 이진 벡터로 표현되고, 0으로 설정된다 정수 인덱스 외에, 그것은 1로 표시된다.

1   tensorflow.examples.tutorials.mnist 수입 input_data
 2  
3 mnist input_data.read_data_sets = ( ' 패스 /로 / MNIST_data / ' , one_hot = TRUE) # 得到一个mnist类
4  
5  인쇄 ( ' 트레이닝 데이터의 크기 : ' , mnist. train.num_examples)
 6  인쇄 ( " 검증 데이터 사이즈 : ' , mnist.validation.num_examples)
 7  인쇄 ( " 테스트 데이터 사이즈 : ' , mnist.test.num_examples)
 8  
9 A =mnist.train.images [0]
 (10)  # 28 * 28 = 784 = 크기, 화소 매트릭스는 범위 [0,1], 흰색 배경에 대한 컬러 비트 0을 나타내는 것은 검은 색 나타내는이다 
. (11)  전단 ( ' 예 트레이닝 데이터 : ' , A, ' \ N- ' , ' 파일 크기 : ' , a.shape)   
 (12)가  
13 인 = B mnist.train.labels [0]
 (14)  이 전단 ( ' 예 트레이닝 데이터 레이블 : ' , ' \ N- ' , B, ' 크기 : ' , b.shape)

책 이동 평균 속도를 학습 감소, 정규화 교육의 모델을 사용하고, 예측 정확도를 비교했다.
다음과 같이 저는 여기에 이러한 기술을 사용하지 않은, 가장 간단한 훈련을 실시, 코드는 다음과 같습니다

. 1  # - * - 코딩 :. UTF-8 - * - 
2  "" " 
. 3  은 Created 23 10 월 2019 년 21시 25분 30초에 물 ON입니다
 . 4  
. 5  . 삼층 완전히 연결 네트워크, 디지털 ID를 만들 수
 6 개  용도 학습 속도 붕괴 , L2의 정규화는, 평균 모델을 이동하는 네트워크를 훈련
 . 7  "" " 
. 8  오기 tensorflow의 TF를 그대로
 . 9  에서 tensorflow.examples.tutorials.mnist 오기 Input_Data
 10  
. 11 INPUT_NODE 784 =
 12이다 OUTPUT_NODE 10 =
 13이다  # 은닉층 노드 
14 LAYER1_NODE = 500
 15 BATCH_SIZE = 100
 16 LEARNING_RATE_BASE = 0.8
 . 17LEARNING_RATE_DECAY = 0.99   
 18 REGULARIZATION_RATE = 0.0001
 19 TRAINING_STEPS = 30000
 20 MOVING_AVERAGE_DECAY = 0.99
 21 learning_rate = 0.001
 22  # 定义网络的前向传播, avg_class为滑动平均类
23  DEF feed_forward (input_tensor, avg_class, weights1, bias1, weights2, bias2)
 24      의 경우 avg_class == 없음 :
 25          레이어 1 = tf.nn.relu (tf.matmul (input_tensor, weights1) + bias1)
 26          리턴 tf.matmul (레이어 1, weights2) + bias2
 27      다른 :
 28         = tf.nn.relu 레이어 1 (tf.matmul (input_tensor, avg_class.average (weights1)) + avg_class.average (Bias1))
 29          리턴 tf.matmul (레이어 1, avg_class.average (weights2)) + avg_class.average (Bias2 )
 (30)      
(31)는  #의 훈련 모델 프로세스 
32  #의 : DEF 트레인 (MNIST) 
(33)이 X = tf.placeholder (tf.float32 [없음, INPUT_NODE] NAME = " X-INPUT ' )
 (34)는 Y_ = tf.placeholder (TF. float32 [없음, OUTPUT_NODE] NAME = ' 는 Y 출력 ' )
 35  #은 생성 은닉층 파라미터 tf.random_normal 
36  #은     폐기 될 것이다보다 개의 표준 편차 값의 그것 tf.truncated_normal 평균 다르다 그리고 다시 선택
37 weights1 = tf.Variable (tf.random_normal ([INPUT_NODE, LAYER1_NODE] = DTYPE tf.float32))
 38 인 Bias1 = tf.Variable (tf.constant (0.1 모양 = [LAYER1_NODE]))
 39 weights2 = tf.Variable (tf.random_normal ([LAYER1_NODE, OUTPUT_NODE] = DTYPE tf.float32))
 40 Bias2 = tf.Variable (tf.constant (0.1 모양 = [OUTPUT_NODE]))
 (41)은 Y = feed_forward (X, 없음, weights1, Bias1 , weights2, Bias2)
 42 인 (학습 가능한 = 0 global_step tf.Variable = FALSE)
 (43)가  
44 인  #는 평균 부, 평균값을 움직임 계산 .apply 기초하여 이동 평균 (가변) 이동, 이동 평균을 기반 .average (변수) 보통 전화를 움직이는 ? 
45  # tf.argmax은 (텐서는 축) 축 치수는 텐서의 최대의 인덱스를 반환
46은  
47  #은 L2 정규화 손실 함수는, 일반적으로, 바이어스 항을 계산하지 신경망 정규화 손실의 우측의 중량을 계산 산출 
48 개  # 랭크 logits의 랭크 -1 같아야 라벨 
49 cross_entropy tf.nn.sparse_softmax_cross_entropy_with_logits = ( = tf.argmax 라벨 (Y_ ,. 1) logits = Y)
 (50) 손실 = cross_entropy
 51는  
52이다 train_step = tf.train.GradientDescentOptimizer (learning_rate) .minimize (손실 global_step = global_step)
 (53)는  
54  #의 이동 평균의 사용, 모든 역 전파를 통해 신경 네트워크의 매개 변수를 업데이트 할뿐만 아니라 각 매개 변수의 이동 평균을 업데이트 다시 데이터를 모두 필요로한다. 
55  # 한번에 조작하는 복수는 tensorflow 제공 tf.group tf.contol_dependencies 및기구 
(56)는  
57  #의 tf.cast (참, tf.float32) = 1.0 tf.cast (거짓, tf.float32) = 0.0  
58 correct_prediction = tf.equal (tf.argmax (Y, 1), tf.argmax (Y_, 1 ))
 (59) 정확도 = tf.reduce_mean (tf.cast (correct_prediction, tf.float32))
 60  
61  tf.Session와 ( )로서 SESS :
 62      . tf.initialize_all_variables () 실행 ()
 63      
64      validate_feed = {X : mnist.validation.images, Y_ : mnist.validation.labels}
 65      test_feed = {X : mnist.test.images, Y_ : mnist .test.labels}
 (66)      
(67)      에 대한 I 범위 (TRAINING_STEPS) :
 68          의 경우 I ~ 1000 == 0 :
 69              validation_acc = sess.run (정확도 = feed_dictvalidate_feed)
 (70)              이 전단 ( ' 트레이닝 %가 D를 단계 후에 G 검증 % 정확도는 ' % ) (I, validation_acc)
 (71)는          #의 MNIST 클래스 기능 next_batch 제공 
72          XS를, YS = mnist.train.next_batch (BATCH_SIZE)는
 73이다          sess.run (train_step가 feed_dict가 = {X : XS, Y_ : YS})
 74      
75      # 트레이닝 후에는, 테스트 세트는 테스트 된 
76      test_acc = sess.run (정확성 feed_dict = test_feed)는
 77      인쇄 ( " 훈련 후 D %의 단계 % 정확도 테스트 G IS ' % (TRAINING_STEPS, test_acc))
 78          
79  #主程序
80  # DEF 본체 (ARGV = 없음) : 
81  #     mnist input_data.read_data_sets = ( '/ mnistdata'one_hot = TRUE) 
82  # 트레인 (mnist)     
83  
84  # 경우 __name__ == '__main__': 
85  #의     TF. app.run () 
86            

 

추천

출처www.cnblogs.com/nicanica/p/11738874.html