2017-09-04 15 views
2

として層の出力を取得:私は(信号分類に使用)kerasにCNNモデルを持っている特徴ベクトル(KERAS)

cnn = Sequential() 

    cnn.add(Conv1D(10,kernel_size=8,strides=4, padding="same",activation="relu",input_shape=(Dimension_of_input,1))) 
    cnn.add(MaxPooling1D(pool_size=3)) 

    cnn.add(Conv1D(10,kernel_size=8,strides=4, padding="same",activation="relu")) 
    cnn.add(MaxPooling1D(2)) 
    cnn.add(Flatten()) 

    cnn.add(Dense(2, activation="softmax")) 

方法「model.summaryを()」を使用し、私は得ることができます各層の出力の形状。私のモデルでは、最後の最大プール層の出力は(None、1、30)であり、平坦化層の出力は(None、30)です。

各列車および試験サンプルについて:平滑化層の出力は、密集層への入力として与えられる前に、30個の特徴(数)を有する特徴ベクトルとして得ることができるか?

+1

はい、可能です。 [this](https://stackoverflow.com/questions/41711190/keras-how-to-get-the-output-of-each-layer/41712013#41712013)の回答を参照してください。 – Matin

答えて

1

で最後のレイヤーを選択します。その後、使用して新しいモデルを作成

last = cnn.layers[-1] 

:だから

inp = Input(shape=(Dimension_of_input,)) 
features = Model(inp, last) 

を、

feature_vec = features.predict(x_train) 

のようにあなたにフラット化層の出力を与えます列車サンプルごとの特徴ベクトル

関連する問題