2017-10-11 7 views
0

私は次のコードを与えられましたが、私のニーズに合わせてカスタマイズしたいと思います。メソッド呼び出しを考える:タイプのリストをパックして展開する方法numpy.ndarray

 best_n_hidden = hyperparam_selection(
      train_network, 
      n_hidden_range=[10, 128], 
      func_args=[tr_X, ts_X, tr_y, ts_y], 
      n_iter=6, 
     ) 

def hyperparam_selection(func, n_hidden_range, func_args=None, n_iter=20): 
    if func_args is None: 
     func_args = [] 

    scores = [] 
    parameters = [] 

    min_n_hidden, max_n_hidden = n_hidden_range 
    n_hidden_choices = np.arange(min_n_hidden, max_n_hidden + 1) 

    # To be able to perform gaussian process we need to 
    # have at least 2 samples. 
    n_hidden = random.randint(min_n_hidden, max_n_hidden) 
    score = func(n_hidden, *func_args) # ISSUE HERE!! 
    parameters.append(n_hidden) 
    scores.append(score) 
    n_hidden = random.randint(min_n_hidden, max_n_hidden) 

問題はtr_X, ts_X, tr_y, ts_yがラインscore = func(n_hidden, *func_args)でスター演算子*func_argsを使用してそれらを開梱するときは、私に問題を与えますので、タイプ<type 'numpy.ndarray'>であることです。私はこのケースで使用できるnumpyの均等なパッキングとアンパックのアプローチが何であるか分かりませんnumpy.stackまたはnumpy.packbitsです。どんなヒントもありがとうございます。

答えて

0

この文脈では配列に関して特別なことは何もありません。

func_args=[tr_X, ts_X, tr_y, ts_y],[...]は、4つの項目のリストです。彼らが何であるかは関係ありません。

この機能の中では、func_argsは常にリストであり、おそらく空の1つである可能性があります。[]

score = func(n_hidden, *func_args)のコールでは、そのリストがに展開されます。

私は(あなたが常に4つのオブジェクトを渡す場合)

def func(n_hidden, x1, x2, y1, y2): 
    ... 

がうまくいくことを期待しています。または

def func(n_hidden, *args): 
    n = len(args) 
    # args is a tuple. 
    if len(args)==4: 
     x1, x2, y1, y2 = args 
     # or work with 
     args[0], args[1], etc. 

あなたはパッキングやアンパックを行っていません。むしろ配列のリストまたはタプルを扱っています。

関連する問題