다음 문서를 사용 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 그런 다음 브라우저에 입력