2017-12-04 10 views
0

Keras(tensorFlowバックエンド付き)を使用して分類モデルを作成しました。この時点で、モデル係数を使用して新しいモデルのWeb APIサービスを作成することを検討しています。しかし、これらの重みを取得しようとすると、期待される結果を得るためにこれらの係数*の特徴を掛けるほど単純ではありません。Keras/Tensor Flowモデルからの係数の重みを利用する

私のトレーニング入力マトリックスは、128 x 128 = 16,384のグレースケール画像です。

model.get_weights() 
[array([[[[-0.03603082, 0.1334779 , 0.10018548, -0.14283592, -0.0429921 , 
     -0.03080634, 0.06451669, -0.09407537, 0.04878693, -0.14003059, 
     0.04794825, 0.06447313, -0.01520954, -0.10879657, 0.13521752, 
     -0.03230923, -0.01395164, 0.04935856, 0.06434418, -0.02601192, 
     0.03416487, 0.08788931, 0.0723172 , -0.12923865, 0.04022292, 
     -0.1328591 , -0.05803869, -0.01380468, -0.10409287, 0.14212781, 
     -0.08511351, -0.03992498]], 

    [[-0.11669005, 0.088085 , -0....... 

    len(model.get_weights()) 
    #10 

    len(model.get_weights()[0]) 
    #3 

    len(model.get_weights()[0][0]) 
    #3 

    len(model.get_weights()[0][0][0]) 
    #1 

    len(model.get_weights()[0][0][0][0]) 
    #32 

    len(model.get_weights()[0][0][0][0][0]) 
    #TypeError: object of type 'numpy.float32' has no len() 

私はこれらすべてのレベルを取る場合* 3 10 * 3 * 1 * 32 = 2880

これはnumpyの配列は唯一2880年の値を持つ5次元を持っている私に言っていますか?たぶん、私はここに何か不足しているかもしれないし、もっと簡単な方法かもしれない。これをAPIを介して新しいテスト画像にどのように適用できるかについての考えはありますか?

答えて

0

最初のレイヤーには288(3 * 3 * 1 * 32)のパラメータがありますが、通常、モデルがCNNの場合は、後続のレイヤーにはさらに多くのパラメータがあります。

weights = model.get_weights() 
for i in range(len(weights)): 
    print(weights[i].shape) 

代わりにあなただけの実行、新しい画像にモデルを適用するにはmodel.summary()

によってパラメータの数を確認することができます(バイアス用語を含む)すべての層のパラメータの番号を印刷するに

model.predict(image)

関連する問題