2017-10-27 9 views
1

私の2番目の畳み込みレイヤの最後のフィーチャマップの出力を変更する必要があります。
可能であれば、コンバージョンレイヤーの出力に配列を追加してください。
以下は、私が作成したpythonスクリプトと出力の望ましい変更の例です。
ありがとうございました!希望layer_outputを設定ケラス層の出力を設定することはできますか?

import numpy as np 
from keras import backend as K 

num=18 
m=11 
n=50 
k=3 
np.random.seed(100) 
features = np.random.rand(num,m,n,k) 

モデル

input_shape=features.shape[1:] 
model = Sequential() 
model.add(Conv2D(2, kernel_size=(1, 3), strides=(1,1),activation='relu',input_shape=input_shape)) 
model.add(Conv2D(21, kernel_size=(1, 48), strides=(1,1),padding="valid",activation='relu')) 
model.add(Conv2D(1, kernel_size=(1, 1), strides=(1, 1),activation='relu',padding="valid")) 
model.add(Dense(1, activation='softmax')) 
Adam = optimizers.Adam(lr=0.00003, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) 
model.compile(loss='mse',optimizer=Adam) 

get_1st_layer_output = K.function([model.layers[0].input], 
[model.layers[1].output]) 
layer_output = get_1st_layer_output([features]) 

は、私はそれをすべての伝播ステップを実行する必要があり
値。

for i in range(0,11): 
    layer_output[0][0][i][0][20]=0.1 
    print(layer_output[0][0][i][0][20]) 

答えて

0

この場合、定数テンソルの連結を使用すると思います。残念ながら、私はそれをうまく動作させることはできませんが、私の仕事を分かち合って、うまくいけばあなたを助けます。

import numpy as np 
import keras 
from keras import backend as K 
from keras.models import Sequential 
from keras.layers import Conv2D, Dense, Concatenate 
from keras import optimizers 

num=18 
m=11 
n=50 
k=3 
np.random.seed(100) 
features = np.random.rand(num, m, n, k) 

custom_tensor = K.constant(0.1, shape=(11, 48, 1)) 

input_shape = features.shape[1:] 
input = keras.Input(shape=input_shape) 
print(K.ndim(input)) 
layer0 = Conv2D(2, kernel_size=(1, 3), strides=(1,1),activation='relu')(input) 
layer0_added = Concatenate(axis=-1)([layer0, custom_tensor]) 
layer1 = Conv2D(20, kernel_size=(1, 48), strides=(1,1),padding="valid",activation='relu')(layer0_added) 
layer2 = Conv2D(1, kernel_size=(1, 1), strides=(1, 1),activation='relu',padding="valid")(layer1) 
layer3 = Dense(1, activation='softmax')(layer2) 

model = keras.models.model(layer0) 
Adam = optimizers.Adam(lr=0.00003, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) 
model.compile(loss='mse', optimizer=Adam) 

それはエラー

ValueError: `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 11, 48, 2), (11, 48, 1)] 

を生成しかし、うまくいけば、これはとにかく一緒にあなたを助けます。

+0

バッチ内の各サンプルのカスタム機能(追加の「なし」ディメンション)が必要です。もし全てのサンプルが同じものであれば、その定数に 'K.repeat_elements'を使うことができます。 –

+0

しかし、どうしたらいいですか?私は最初の次元として 'None'を使ってテンソルを初期化する方法を見つけることができませんでした。 – KeithWM

+0

"-1"を試すことができます。動作しない場合は、 'K.repeat_elements'を使用します。 (機能的なAPIモデルが必要です)。 –

関連する問題