2017-12-18 29 views
0

ラムダ関数を実装して、画像を28x28x1から224x224x3にサイズ変更しました。私はすべてのチャンネルからVGG平均を引く必要があります。私はこれをしようとすると、私はエラーを取得ケラスでチャンネルワイズ平均を差し引くにはどうすればいいですか?

はTypeError:「テンソル」オブジェクトは、アイテムの割り当てをサポートしていません

def try_reshape_to_vgg(x): 
    x = K.repeat_elements(x, 3, axis=3) 
    x = K.resize_images(x, 8, 8, data_format="channels_last") 
    x[:, :, :, 0] = x[:, :, :, 0] - 103.939 
    x[:, :, :, 1] = x[:, :, :, 1] - 116.779 
    x[:, :, :, 2] = x[:, :, :, 2] - 123.68 
    return x[:, :, :, ::-1] 

テンソルの要素ごとの減算を行うために推奨される解決策は何ですか?

+0

私たちが知っているように、入力自体でこれを行うことができます。しかし、私はLamda層の一部としてこれをやりたいので、この減算は入力データ補強の後に適用されます。 – user1159517

答えて

2

あなたはKeras 2.1.2後テンソルにkeras.applications.imagenet_utils.preprocess_inputを使用することができます。デフォルトモード'caffe'の下で、VGG平均をxから差し引きます。

from keras.applications.imagenet_utils import preprocess_input 

def try_reshape_to_vgg(x): 
    x = K.repeat_elements(x, 3, axis=3) 
    x = K.resize_images(x, 8, 8, data_format="channels_last") 
    x = preprocess_input(x) 
    return x 

あなたがKerasの古いバージョンでの滞在を希望される場合は、多分あなたはそれがKeras 2.1.2で実装されているか確認して、try_reshape_to_vggに便利なラインを抽出することができます。

def _preprocess_symbolic_input(x, data_format, mode): 
    global _IMAGENET_MEAN 

    if mode == 'tf': 
     x /= 127.5 
     x -= 1. 
     return x 

    if data_format == 'channels_first': 
     # 'RGB'->'BGR' 
     if K.ndim(x) == 3: 
      x = x[::-1, ...] 
     else: 
      x = x[:, ::-1, ...] 
    else: 
     # 'RGB'->'BGR' 
     x = x[..., ::-1] 

    if _IMAGENET_MEAN is None: 
     _IMAGENET_MEAN = K.constant(-np.array([103.939, 116.779, 123.68])) 
    # Zero-center by mean pixel 
    if K.dtype(x) != K.dtype(_IMAGENET_MEAN): 
     x = K.bias_add(x, K.cast(_IMAGENET_MEAN, K.dtype(x)), data_format) 
    else: 
     x = K.bias_add(x, _IMAGENET_MEAN, data_format) 
    return x 
+0

Btw、もしあなたがMobileNetを使っているのであれば、おそらくVGG平均を引くのではなく 'mode = 'tf''を使うべきでしょう。 –

+0

https://stackoverflow.com/questions/47862788/how-to-load-mobilenet-weights-with-an-input-tensor-in-keras?noredirect=1#comment82692173_47862788 ここでもお手伝いできますか? – user1159517

関連する問題