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)]
これは動作しません。私は "変数ではない"とゼロサイズのテンソルのような多くのエラーを取得します。どのようにしてベクトルを分割し、それを異なるテンソルの異なる形状に割り当てることができますか?
私はforループで列挙を追加し、number_splitsをnumberタプルに置き換えた。しかし、私は手動でパラメータサイズを割り当てない方法があることを期待していた... – ultrafrog
私は答えを見つけ出す。 split_sizeは、learnable_param_listのparamの[reduce(mul、param.get_shape()。as_list()、1)に置き換えることができます] – ultrafrog
あなたのコメントを回答にコピーして、ありがとう! – dga