2017-01-24 6 views
0

私は単純なMLPを作成したいと思います。私は、Wが2-dであり、bが1-dであるパラメータセット[W1、b1、W2、b2、W3、b3]を有する。私は1つのベクトルにパラメータセットを連結したい、私はこれをやった:Tensorflowのパラメータの分割と結合

learnable_param_list = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES) 
    learnable_param = tf.concat(1, [[tf.reshape(param, [-1])] for param in learnable_param_list], name='learnable_paramVector') 

これは動作しているようだ。今度は、learnable_param_listを単一のベクトルで更新したいと思います。試しました

learnable_param_assign_split = tf.split_v(split_dim=0, value=learnable_param_assign_placeholder, size_splits=[tf.size(param) for param in learnable_param_list]) 
    for idx, param_list in learnable_param_list: 
     reshaped_input_vector = tf.reshape(learnable_param_assign_split[idx], shape=tf.shape(param_list)) 
     assignLearnableParam_op_list += [param_list.assign(learnable_param_assign_placeholder)] 

これは動作しません。私は "変数ではない"とゼロサイズのテンソルのような多くのエラーを取得します。どのようにしてベクトルを分割し、それを異なるテンソルの異なる形状に割り当てることができますか?

+0

私はforループで列挙を追加し、number_splitsをnumberタプルに置き換えた。しかし、私は手動でパラメータサイズを割り当てない方法があることを期待していた... – ultrafrog

+0

私は答えを見つけ出す。 split_sizeは、learnable_param_listのparamの[reduce(mul、param.get_shape()。as_list()、1)に置き換えることができます] – ultrafrog

+0

あなたのコメントを回答にコピーして、ありがとう! – dga

答えて

0

私は答えを見つけます。 split_sizeは置き換えることができますlearnable_param_listのparamの[reduce(mul、param.get_shape()。as_list()、1)

関連する問題