tensorboard - 사용 mnist는 tensorboard의 기본 기능을 보여줍니다

다음 문서를 사용 tensorflow 가장 기본적인 예를 들어 mnist, 쇼의 tensorboard를 사용하는 가장 직관적이고 쉬운 방법을 배우기 시작

 

상기 포함 tensorboard : 스칼라, 이미지 히스토그램, 상기 다운 코드 공간을 표시한다.

 

tensorboard_test.py

UTF-8 :. #coding 
AS 오기 tensorflow의 TF 
tensorflow.examples.tutorials.mnist 오기 Input_Data에서 
오기 시간 
가져 OS 
오기 PROJECTOR_visual 

"" " 
가중치 초기화 
0에 가까운 작은 양수로 초기화 
" "" 
DEF weight_variable (모양) : 
    초기 = tf.truncated_normal (형상, STDDEV = 0.1) 
    tf.Variable (초기)을 반환 

DEF bias_variable (형상) : 
    초기 tf.constant = (0.1, 모양 = 모양) 
    tf.Variable (초기)을 돌려 

"" " 
컨벌루션 1 (보폭의 크기)의 컨볼 루션 단계, 0 마진 (패딩 크기)의 풀링 
풀링 최대 풀링은 간단한 템플릿으로 기존의 2 × 2 크기을 
"" " 
: DEF의 conv2d (X, W가) 
    반환 TF. nn.conv2d (X, W, 발전 = [1, 1, 1, 1,) 패딩 = 'SAME'
    #의 tf.nn.conv2d (입력, 필터, 진보, 패딩 use_cudnn_on_gpu = 없음, data_format = 없음, 이름 = 없음) 
    #의 X (입력) : 일괄 in_height, in_width, in_channels] 
    #에 W (필터) : filter_height , filter_width, in_channels, out_channels] 
    # 스트라이드 : 입력의 각 차원에 대한 슬라이딩 윈도우의 스트라이드. 
    동일한 수평 스트라이드 꼭지점의 가장 일반적인 경우에 대해 # 진보 = [1, 스트라이드, 스트라이드 1] 

DEF max_pool_2x2 (X) : 
    리턴 tf.nn.max_pool (X, ksize = [1, 2, 2, 1 , 
                          진보 = [1, 2, 2, 1] = 패딩) 'SAME' 
    #의 tf.nn.max_pool (값 ksize, 진보, 패딩 data_format = 'NHWC'이름 = 없음) 
    #의 X (값) [배치, 높이, 폭, 채널]
    # Ksize (풀 크기). 텐서 입력의 차원의 각의 크기의 길이> = 4 창 보유 INTS 목록 
    (풀 사이즈 슬라이딩) # 스트라이드를 : 갖는다 INT의리스트 길이> = 4. 차원의 각 입력 텐서 용의 슬라이딩 스트라이드의 창. 


시작 = time.clock () # 계산 개시 시각 
mnist = input_data.read_data_sets ( "MNIST_data /" , one_hot = TRUE) #MNIST의 데이터 입력 

os.system을 ( "파이썬 create_sprite.py ") 


" "" 
제 1 층 컨벌루션 층 

x_image (BATCH, 28, 28 ,. 1) -> h_pool1 (BATCH, 14, 14, 32) 
'' ' 
X = tf.placeholder (tf.float32 [ 없음, 784]) 
x_image = -1, 28, 28 ,. 1]) # 마지막 tf.reshape 채널의 수를 나타내는 치수 (X, [경우에 비해 RGB. 3 

tf.summary.image ( 'input_image'x_image을10) 

W_conv1 weight_variable = ([5, 5, 1, 32])
b_conv1 bias_variable = ([32]) 
# 출력 -> [일괄 out_height, out_weight, out_channels]

tf.summary.histogram ( 'W_conv1'W_conv1) 
tf.summary.histogram ( 'b_conv1'b_conv1) 

CONV1 = conv2d (x_image, W_conv1) + b_conv1 

h_conv1 = tf.nn.relu (CONV1) 
#에 x_image -> [일괄 , in_height, in_width, in_channels] 
# [배치, 28, 28, 1] 
# W_conv1 -> [filter_height, filter_width, in_channels, out_channels] 
# [5, 5, 1, 32] 
# 출력 -> [일괄 out_height, out_width , out_channels] 
# [배치, 28, 28, 32] 
h_pool1 = max_pool_2x2 (h_conv1) 
# h_conv1 -> [일괄 in_height, in_weight, in_channels] 
# [배치, 28, 28, 32] 
# [배치, 14, 14, 32] 

'' ' 
第二层卷积层

h_pool1 (BATCH, 14, 14, 32) -> h_pool2 (BATCH ,. 7 ,. 7, 64) 
"" " 
W_conv2 weight_variable = ([5 ,. 5, 32, 64.]) 
b_conv2 bias_variable = ([64]) 

tf.summary .histogram ( 'W_conv2'W_conv2) 
tf.summary.histogram ( 'b_conv2'b_conv2) 

CONV2 = conv2d (h_pool1, W_conv2) + b_conv2 

h_conv2 = tf.nn.relu (CONV2) 
# h_pool1 -> [BATCH, 14, 14, 32] 
# W_conv2 -> [5 ,. 5, 32, 64]. 
# 출력 -> [BATCH, 14, 14, 64] 
h_pool2 = max_pool_2x2 (h_conv2) 
# h_conv2 -> [BATCH, 14, 14, 64] 
# 출력 -> [BATCH ,. 7 ,. 7, 64] 

"" " 
컨벌루션 층, 출력 영상에 부가 
", ""
reverse_weight1 weight_variable = ([5,5,32,64])
reverse_conv1 = tf.nn.conv2d_transpose (CONV2, reverse_weight1, [50,14,14,32] 진보 = [1,1,1,1], 패딩 = "SAME") 
reverse_weight2 weight_variable = ([5,5,1 32]) 
reverse_conv2 = tf.nn.conv2d_transpose (reverse_conv1, reverse_weight2 [50,28,28,1, 진보 = [1,2,2,1], 패딩 =) "SAME" 

reverse_weight3 weight_variable = ([5 , 5,1,32]) 
reverse_conv3 = tf.nn.conv2d_transpose (CONV1, reverse_weight3 [50,28,28,1, 발전 용 = [1,1,1,1], 패딩 = "SAME") 
TF. summary.image ( "reverse_conv2"reverse_conv2,10) 
tf.summary.image ( "reverse_conv1"reverse_conv3,10) 


"" " 
第三层全连接层

h_pool2 (배치, 7, 7, 64) -> h_fc1 (1 1024) 
"" " 
W_fc1 weight_variable = ([7 * 7 * 641024]) 
b_fc1 bias_variable = ([1024])
 
tf.summary.histogram ( 'W_fc1'W_fc1) 
tf.summary.histogram ( 'b_fc1'b_fc1) 

h_pool2_flat = tf.reshape (h_pool2 [-1 ,. 제 7 * 64] ) 
h_fc1 = tf.nn.relu (tf.matmul (h_pool2_flat, W_fc1) + b_fc1) 

"" " 
드롭 아웃 

h_fc1 -> 닫기 h_fc1_drop 훈련 활성화 시험 
" "" 
keep_prob = tf.placeholder ( "플로트") 
h_fc1_drop tf.nn.dropout = (h_fc1, keep_prob) 

"" " 
네번째 층 소프트 맥스 출력 층 
" "" 
W_fc2 weight_variable = ([1024, 10]) 
b_fc2 bias_variable = ([10]) 

y_conv tf.nn.softmax = (TF .matmul (h_fc1_drop, W_fc2) b_fc2 +를) 

"" " 
교육 및 평가 모델 

ADAM 최적화, 가파른 하강 기울기를 할feed_dict 제어 파라미터 강하 비율 keep_prob 추가 
"" "feed_dict keep_prob 강하는 비례 제어 변수를 추가 
Y_ = tf.placeholder ( "플로트" [없음, 10])
cross_entropy = -tf.reduce_sum (Y_ * tf.log ( y_conv)) # 산출 크로스 엔트로피 

train_step = tf.train.AdamOptimizer (1E-4) .minimize (cross_entropy) #의 아담 최적화 레이트 0.0001 수행 알아 사용 트리밍 
correct_prediction = tf.equal (tf.argmax (y_conv, 1), tf.argmax (Y_ 1)) #의 태그는 예측이 실제 라벨 일치 판정 
정밀도 = tf.reduce_mean (tf.cast (correct_prediction, "플로트") ) 

tf.summary.scalar ( 'cross_entropy', cross_entropy) 
tf.summary.scalar ( '정확도', 정확도) 

합병 = tf.summary.merge_all () 

SESS = tf.Session () # 부팅 모델을 만든 

작가 = TF. summary.FileWriter ( "로그 /", sess.graph) 

#의 sess.run (tf.initialize_all_variables ()) # 이전 버전의 
sess.run (tf.global_variables_initializer ()) # 변수를 초기화

범위에서 I (PROJECTOR_visual.TRAINING_STEPS) 대 : #의 개시 훈련 모델 5000 회로 훈련
    배치 = mnist.train.next_batch (50) #BATCH大小设置为50 
    만약 100 % == 0 
        train_accuracy accuracy.eval = (세션 = SESS, 
                                       feed_dict = {X : 배치 [0] Y_ : 배치 [1] , keep_prob 1.0}) 
        인쇄 ( "단계가 % d, train_accuracy % g"% (I, train_accuracy)) 
    sess.run (train_step, feed_dict = {X : 배치 [0] Y_ : 배치 [1] 
                   keep_prob 0.5 }) #神经元输出保持不变的概率keep_prob为0.5 
    RS, sess.run ([병합, train_step] _ = feed_dict = {X : 배치 [0] Y_ : 배치 [1] keep_prob 1.0}) 
    writer.add_summary (RS, ⅰ) 

final_result = sess.run (h_fc1, feed_dict = {X : mnist.test.images}) 

인쇄 ( "테스트 정확도 %의 g '%의 accuracy.eval (세션 = SESS, 
      feed_dict = {X : mnist.test.images는 Y_ : mnist.test.labels, 
                   keep_prob : 1.0})) # 뉴런 출력은 변하지 keep_prob 확률이 불변이고, 1이고, 유지하고 출력 

PROJECTOR_visual.visualisation (final_result)

 

PPROJECTOR_visual.py

오기 AS tensorflow의 TF 
오기 OS 
오기 tqdm 

tensorflow.contrib.tensorboard.plugins 가져 오기 프로젝터 

TRAINING_STEPS = 1000 

. LOG_DIR = '기록' 
SPRITE_FILE = 'mnist_sprite.jpg' 
META_FIEL = "mnist_meta.tsv" 
TENSOR_NAME = "FINAL_LOGITS" 


# 시각화 최종 출력 레이어 벡터 필요한 로그 파일 
DEF 시각화 (final_result) 
    매립 완료 Tensorflow 변수가 있기 때문에, 최종 출력 층 벡터의 결과를 저장하기위한 새로운 변수를 사용 # 그래서 PROJECTOR 시각화 TensorFlow 변분 와우있다. 
    # 그래서 여기에 출력 층 벡터의 값을 유지하는 변수의 새로운 정의를 필요로 
    y_visual = tf.Variable (final_result, 이름 = TENSOR_NAME) 
    summary_writer tf.summary.FileWriter =을 (. LOG_DIR) 

    로그 파일 생성 할 수 있도록 project.ProjectorConfig 클래스에 의해 #  
    설정을 projector.ProjectorConfig = ()
    #을 침구 결과의 시각화를 증가 할 필요
    매립 config.embeddings.add = () 
    # 1에 대응하는 매립 Tensorflow 결과 변수 이름 지정 
    embedding.tensor_name y_visual.name = 

    #는 메타 데이터 여기서 지정한 찾기 
    # 결과에 대응하는 원 데이터를 지정하는 정보를 매립한다. 예를 들어, 현재 화상에 대응 MNIST 각 카테고리 지정 실제 테스트이다. 워드에서 워드 ID에 대응하는 어 벡터 일 수있다. 
    벡터가 다음에 레이블을 지정하지 않은 경우 #이 파일은 선택 사항입니다. 
    = META_FIEL embedding.metadata_path 

    # 당신이 스프라이트 (우리가 나중에 만들어집니다) 곳이 지정 찾기 
    # 지정된 스프라이트 이미지를. 더 스프라이트 이미지, 결과의 시각화 경우에 선택 사항입니다 
    # 각 지점이 아니라 특정 사진을보다 조용하던 작은 지점입니다. 
    = SPRITE_FILE의 embedding.sprite.image_path의 
    #을 스프라이트 이미지를 제공, 당신은 single_image_dim하여 한 장의 사진을 지정할 수 있습니다.  
    # 당신이 묻어을 시각화 할 것인지 말
    #이 원래 스프라이트 이미지에서 올바른 그림을 차단하는 데 사용됩니다.
    embedding.sprite.single_image_dim.extend ([28, 28]) 

    # 프로젝터는 로그 파일의 콘텐츠를 원하는. 
    projector.visualize_embeddings (summary_writer, 설정) 

    로그 정보를 생성 # 세션 초기화 새로 변수 선언 파일에 기록이 필요합니다. 
    = tf.InteractiveSession 수신 세션 () 
    sess.run (tf.global_variables_initializer ()) 
    보호기 tf.train.Saver = () 
    saver.save (수신 세션의 os.path.join (. LOG_DIR, "모델") TRAINING_STEPS) 

    summary_writer.close ()

 

다음 두 다음 평 같은 폴더에있는 파일, 그리고 직접 사용에 cmd는, 파이썬 tensorboard_test.py을 실행할 때, 시작 할 수있을 것입니다 실행합니다.

HTTP : // localhost를 : 8080 화면을 열 수 있습니다 tensorboard 그런 다음 브라우저에 입력

 

추천

출처www.cnblogs.com/xuyong437/p/11202047.html