同じ重みをある程度共有する2つの同じブランチを実装しようとしています。あなたがここに見るグラフィックは、私が持っているものの単純化されたモデルです。だから、私は入力を持っています:否定的で肯定的なもの、conv1_1_xからRpnまでのすべての層は同じ重みを持つべきです。私は、これまで実施することを試みたことは次のとおりです。TheasanoとKerasで同じ重みを共有する2つの同一のブランチを実装する方法
def create_base_network(input_shape, branch, input_im, img_input, roi_input):
def creat_conv_model(input_shape):
branch = Sequential()
branch.add(Conv2D(64,filter_size,subsample = strides, input_shape=input_shape , activation='relu',kernel_initializer='glorot_uniform' ,name='conv1_1_'+str(branch)))
branch.add(Conv2D(64,filter_size, subsample = strides, activation='relu', kernel_initializer='glorot_uniform',name='conv1_2_1'+str(branch)))
branch.add(MaxPooling2D(pool_size=(2,2), strides=pool_stride, name='pool1_'+str(branch)))
branch.add(Conv2D(128,filter_size,subsample = strides, activation='relu', kernel_initializer='glorot_uniform',name='conv2_1_'+str(branch)))
return branch
shared_layers = creat_conv_model(input_shape)
rpn_output = rpn(shared_layers(input_im),9,branch)
model = Model([img_input, roi_input], rpn_output[:2])
return model
Branch_left = create_base_network((64, 64, 3), 1, img_input_left, img_input, roi_input)
Branch_right = create_base_network((64, 64, 3), 2, img_input_right, img_input, roi_input)
私はこれを実行して、私は次のエラーを取得:
RuntimeError: Graph disconnected: cannot obtain value for tensor /input_2 at layer "input_2". The following previous layers were accessed without issue: []
誰でも助けることができますか?
なぜ2つが同じで、同じ入力を使用しているのですか? –
入力は2つの異なる画像になります。 1つの負の入力と1つの正の入力。新しい実装で質問を編集しました。この場合、重みが実際に共有されているかどうか確認してください。 – Tassou