1

this video에 표시된 것과 같이 Tensorflow에서 하이퍼 매개 변수 검색을 구현하고 싶습니다. 불행히도 그것에 대한 튜토리얼을 찾을 수 없었습니다.Tensorflow에서 하이퍼 매개 변수 검색을 구현하는 방법은 무엇입니까?

사용하는 코드를 찾았지만 제대로 이해하지 못했습니다. 베이지안 최적화를 구현하는 것이 가장 좋지만 그리드 또는 무작위 검색을 먼저 시도하고 싶습니다.

전에 다른 그래프를 만들어야합니까? 여러 그래프에 대한 교육을 어떻게 수행 할 수 있으며이를 비교하는 방법은 무엇입니까?

+0

공부 한 코드를 표시하면 더 나은 답변을 얻을 수 있습니다 – DarkCygnus

+1

tensorflow 부분 또는 tensorboard 부분에 대해 묻고 있습니까? 그래프와 매개 변수를 다루는 방법이나 적절하게 기록하고 비교를 위해 tensorboard를 사용하는 방법? – asakryukin

+0

이 질문에 대한 답은 매우 명확하지 않습니다. 약간의 정보를 직접 제공하지 않으면 현상금을 배치하는 것이 도움이되지 않습니다. –

답변

1

기계 학습을 통해 최상의 하이퍼 파라미터를 선택하는 방법을 찾으려고했습니다.

나는 TensorFlow 분류 문제를 선택하고 전체 요인 초자계 그리드 검색으로 정확도를 계산했습니다. 그런 다음 로지스틱 회귀 분석법과 다른 DNN 분류기를 사용하여 하이퍼 매개 변수 집합이 내 문제에 도움이된다는 것을 '배우게'하려고했습니다.

결과가 약간 혼란 스럽지만 ... 귀하의 특정 문제에 대해서만 효과가있을 수 있습니다. 당신은 좀 걸릴 수 있습니다 : 당신은 DyTB (dynamic training bench) 사용할 수 있습니다 https://medium.com/@tirthajyoti/when-machine-learning-tries-to-predict-the-performance-of-machine-learning-6cc6a11bb9bf

2

:이 도구는 당신이 hyperparameter 검색에 을 집중할 수는 varisous 훈련 모델의 측정 통계를 비교하는 tensorboard를 사용하여.

DyTB는 현재 하이퍼 매개 변수 세트와 관련된 고유 한 이름을 작성하고이를 로그 디렉토리로 사용합니다. 다른 로그 디렉토리를 만들면 Tensorboard를 쉽게 비교할 수 있습니다.

예를 들어,이 한 줄에 Cifar10에 VGG을 훈련 할 수있다 (VGG 및 Cifar10 모두 미리 정의 된 모델 & 데이터 세트의 일부를 사용할 수 있습니다) :

import tensorflow as tf 
from dytb.inputs.predefined import Cifar10 
from dytb.train import train 
from dytb.models.predefined.VGG import VGG 

# Instantiate the model 
vgg = VGG() 

# Instantiate the CIFAR-10 input source 
cifar10 = Cifar10.Cifar10() 

# 1: Train VGG on Cifar10 for 50 epochs 
# Place the train process on GPU:0 
device = '/gpu:0' 
with tf.device(device): 
    info = train(
     model=vgg, 
     dataset=cifar10, 
     hyperparameters={ 
      "epochs": 50, 
      "batch_size": 50, 
      "regularizations": { 
       "l2": 1e-5, 
       "augmentation": { 
        "name": "FlipLR", 
        "fn": tf.image.random_flip_left_right, 
        # factor is the estimated amount of augmentation 
        # that "fn" introduces. 
        # In this case, "fn" doubles the training set size 
        # Thus, an epoch is now seen as the original training 
        # training set size * 2 
        "factor": 2, 
       } 
      }, 
      "gd": { 
       "optimizer": tf.train.AdamOptimizer, 
       "args": { 
        "learning_rate": 1e-3, 
        "beta1": 0.9, 
        "beta2": 0.99, 
        "epsilon": 1e-8 
       } 
      } 
     }) 

이 모델의 훈련을하는 동안, 당신은을 모니터링 할 수 있습니다 손실 경향 및 텐서 보드를 사용한 정확도 값.

새 폴더가 사용되는 대표적인 하이퍼 파라미터의 일부 사용하여 생성됩니다 : 당신이 볼 수있는

tensorboard --logdir "log/VGG/CIFAR-10_Adam_l2=1e-05_fliplr/" 

을 만들어 모델과 다음 추가 훈련하는 데 사용되는 hyperparameter에 대한 폴더, 하위 폴더로.

즉, ADAM에서 MomentumOptimizer로 변경하거나 메모를 추가하거나 l2 정규화 매개 변수 ecc를 변경하면 DyTB가 VGG 폴더에 하위 폴더를 만듭니다.

이이 방법으로, logdir로 모델 디렉토리를 사용, tensorboard로 측정 된 메트릭을 비교할 수 : 좀 더 포괄적 인 가이드를 들어

tensorboard --logdir log/VGG 

, 단지 DyTB README.md 또는 python-notebook example를 보라.

1

일부 코드는 here으로 제공되므로 결과를 다시 만들 수 있습니다.

코드는 모델을 실행하고 플롯은 tensorboard에 의해 tensorboard --logdir <log location> 명령으로 생성됩니다. 이 경우 : tensorboard --logdir /tmp/mnist_tutorial. 다음과 같이 비디오에서

발췌은 다음과 같습니다

# Try a few learning rates 
for learning_rate in [1E-3, 1E-4, 1E-5]: 

    for use_two_fc in [True, False] 
     for use_two_conv in [True, False]: 

      # Construct a hyperparameter string for each one (example: "lr_1E,fc=2,conv=2) 
      hparam_str = make_hparam_string(learning_rate, use_two_fc, use_two_conv) 

      writer = tf.summaru/FileWriter("/tmp/mnist_tutorial/" + hparam_str) 

      # Actually run with the new settings 
      mnist(learning_rate, use_two_fully_connected_layers, _use_two_conv_layers, writer) 

체크 아웃 tensorboard를 설정하는 방법에 대한 더 자세한 설명은 github repo.