9

私がかなり慣れていない Keras の使用について質問があります。畳み込みニューラル ネットワークを使用して、その結果を標準のパーセプトロン レイヤーにフィードし、出力を生成します。この CNN には一連の画像が供給されます。これまでのところ、これはごく普通のことです。

ここで、画像以外の短い入力ベクトルを、すべての CNN レイヤーを経由せずに最後のパーセプトロン レイヤーに直接渡したいと考えています。Kerasでこれを行うにはどうすればよいですか?

私のコードは次のようになります。

# last CNN layer before perceptron layer
model.add(Convolution2D(200, 2, 2, border_mode='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Dropout(0.25))

# perceptron layer
model.add(Flatten())

# here I like to add to the input from the CNN an additional vector directly

model.add(Dense(1500, W_regularizer=l2(1e-3)))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))

どんな答えでも大歓迎です、ありがとう!

4

3 に答える 3

4

Keras のバックエンドが Theano である場合、次のことができます。

import theano
import numpy as np

d = Dense(1500, W_regularizer=l2(1e-3), activation='relu') # I've joined activation and dense layers, based on assumption you might be interested in post-activation values
model.add(d)
model.add(Dropout(0.5))
model.add(Dense(1))

c = theano.function([d.get_input(train=False)], d.get_output(train=False))
layer_input_data = np.random.random((1,20000)).astype('float32') # refer to d.input_shape to get proper dimensions of layer's input, in my case it was (None, 20000)
o = c(layer_input_data)
于 2016-02-24T10:17:18.213 に答える