Page 963 - 3-3
P. 963

kernel1=tf.Variable(tf.truncated_normal(shape=[4,4,1,4],stddev=0.1))
                    #4*4*1 의 필터를 4    장 사용하기 위해서 정규분포로 초기화 정규분포의 난수(                      )
                    bias1=tf.Variable(tf.truncated_normal(shape=[4],stddev=0.1))
                    # 이미지와 kernel1   을 conv  한 후 사이즈 만큼 더해주기위한 변수
                    conv1=tf.nn.conv2d(x,kernel1,strides=[1,1,1,1],padding='SAME')+bias1
                    # 이미지 x  에 kernel1 을 컨볼루션곱을 한다
                    #2 칸을 이동하려면 [1,2,2,1]      로 한다
                    #padding 옵션에 따라서 출력 사이즈가 바뀜


                    activation=tf.nn.relu(conv1)
                    # 컨볼루션을 한 conv1      변수에 ReLU     활성함수를 적용
                    pool1=tf.nn.max_pool(activation,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME')
                    #tf.nn.pool 을 이용해서 14*14*4     사이즈로 바뀜


                    kernel2=tf.Variable(tf.truncated_normal(shape=[4,4,4,8],stddev=0.1))
                    #4*4*4 의 필터를 8    장 사용하기 위해서 정규분포로 초기화
                    bias2=tf.Variable(tf.truncated_normal(shape=[8],stddev=0.1))
                    #14*14*4 크기로 바뀐 이미지와 kernel2         를 conv  한 후 사이즈 만큼 더해주기위한 변수
                    conv2=tf.nn.conv2d(pool1,kernel2,strides=[1,1,1,1],padding='SAME')
                    #14*14*4  사이즈로 바뀐 이미지에 kerenl1          을 컨볼루션곱을 한다
                    activation2=tf.nn.relu(conv2)
                    # 컨볼루션을 한 conv2      변수에 ReLU     활성함수를 적용
                    pool2=tf.nn.max_pool(activation2,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME')
                    #tf.nn.pool 을 이용해서 7*7*8     사이즈로 바뀜


                    w1=tf.Variable(tf.truncated_normal(shape=[8*7*7,plateCount]))
                    #8*7*7 * plateCount 크기의 변수 생성
                    b1=tf.Variable(tf.truncated_normal(shape=[plateCount]))
                    # 출력 사이즈만큼 크기를 잡음
                    pool2_flat=tf.reshape(pool2,[-1,8*7*7])
                    #CNN Layer  를 2 번에 걸쳐 7*7*8     사이즈의 크기를 1       차로 펼친다
                    outPutLayer=tf.matmul(pool2_flat,w1)+b1
                    #pool2_flat 와 w1 를 내적하고 b1     을 더한다


                    loss=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits
                    (labels=y_label,logits=outPutLayer))
                    # 로그와 레이블간의 softmax         교차 엔트로피를 계산한 값의 평균값을 낸다
                    train_step=tf.train.AdamOptimizer(0.005).minimize(loss)
                    #0.005 의 step 으로 최소값을 구함


                init=tf.global_variables_initializer()
                # 초기화 하는 함수 저장
                sess=tf.Session()
                #Session 을 sess 에 저장


                                                         - 963 -
   958   959   960   961   962   963   964   965   966   967   968