2017-02-20 12 views
0

私は訓練されたモデルの結果を持ち、numpy出力ファイルではFlattenレイヤーで終わります。 私はそれらをロードして密集層の入力として使用しようとしています。連続したKerasモデルのDenseレイヤーへの1次元データのロード

train_data = np.load(open('bottleneck_flat_features_train.npy')) 
train_labels = np.array([0] * (nb_train_samples/2) + [1] * (nb_train_samples/2)) 
# 
validation_data = np.load(open('bottleneck_flat_features_validation.npy')) 
validation_labels = np.array([0] * (nb_validation_samples/2) + [1] * (nb_validation_samples/2)) 
# 
top_m = Sequential() 
top_m.add(Dense(2,input_shape=train_data.shape[1:], activation='sigmoid', name='top_dense1')) 
top_m.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) 
# 
top_m.fit(train_data, train_labels, 
    nb_epoch=nb_epoch, batch_size=my_batch_size, 
    validation_data=(validation_data, validation_labels)) 

は、しかし、私は、次のエラーメッセージが表示されます。

ValueError: Error when checking model target: expected top_dense1 to have 
shape (None, 2) but got array with shape (13, 1) 

マイ入力寸法は、(16,1536) - この限られたトレイルラン、1536個の機能のための16枚の画像。

>>> train_data.shape 
(16, 1536) 

高密度レイヤーは、1次元1536長アレイが必要です。

>>> train_data.shape[1] 
1536 

どうすればよいですか? 多くの感謝!

+0

train_data.shapeとは何ですか? –

+0

良い点、私はその情報を私の質問に加えました。 – user2182857

答えて

1

問題が見つかりました - 私は正しくlablesを定義しませんでした。モデルのコンパイルを疎なカテゴリ横断モードに切り替えました。

私の現在のコードは

def train_top_model(): 
    train_data = np.load(open('bottleneck_flat_features_train.npy')) 
    train_labels = np.array([0] * (nb_train_samples/2) + [1] * (nb_train_samples/2)) 
# 
    validation_data = np.load(open('bottleneck_flat_features_validation.npy')) 
    validation_labels = np.array([0] * (nb_validation_samples/2) + [1] * (nb_validation_samples/2)) 
# 
    top_m = Sequential() 
    top_m.add(Dense(2,input_shape=train_data.shape[1:], activation='softmax', name='top_dense1')) 
    top_m.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy', metrics=['accuracy']) 
# 
    top_m.fit(train_data, train_labels, 
    nb_epoch=nb_epoch, batch_size=my_batch_size, 
    validation_data=(validation_data, validation_labels)) 

今では動作し、収束しています。

1

モデルの代わりにtop_mをコンパイルしてフィットしたくないのですか?

+0

ありがとう、私の悪い、編集された質問に応じて。 – user2182857

+0

それでエラーは残っていますか?モデル標的をチェックする際にエラー:: –

+0

エラーが とValueErrorに変更された期待される形状を有するようにtop_dense1(なし、2)が、修正問題で説明したような形状を持つ配列(13、1) を得ました。 – user2182857

関連する問題