質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2419閲覧

Python3 BatchNormalizationをどこに追加したら良いか分からない

SuzuAya

総合スコア71

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/05/29 03:54

前提・実現したいこと

オートエンコーダのエンコーダ部分を畳み込みにしたのですが、精度向上のため、BatchNormalizationも追加したいと考えております。
公式チュートリアル等も確認したのですが、model.addで追加する方法は多く見つかるものの、私のようなコードの書き方をした場合の追加方法が見つかりませんでした。

無理やり追加してみたところ、以下のようなエラーメッセージが出てしまいました。

お手数をお掛けしますが、どのように追加したらうまくいくかアドバイスしていただけますと大変幸いです。
どうぞよろしくお願いいたします。

発生している問題・エラーメッセージ

TypeError: ('Keyword argument not understood:', 'BatchNormalization')

該当のソースコード

from __future__ import absolute_import from __future__ import division from __future__ import print_function from keras.layers import Lambda, Input, Dense from keras.models import Model from keras.models import Sequential, model_from_json from keras.losses import mse, binary_crossentropy from keras.layers import Conv2D, Flatten from keras.layers import Reshape, Conv2DTranspose,BatchNormalization from keras.utils import plot_model, np_utils from keras.utils import plot_model from keras.callbacks import Callback, EarlyStopping, TensorBoard, ModelCheckpoint, LearningRateScheduler, CSVLogger from keras import optimizers from keras import backend as K from keras.preprocessing.image import array_to_img, img_to_array,load_img from keras.preprocessing.image import ImageDataGenerator import numpy as np import matplotlib.pyplot as plt import argparse import os import re import glob import random as rn import tensorflow as tf import cv2 from PIL import Image import warnings warnings.filterwarnings('ignore') %matplotlib inline #reparameterization trick # instead of sampling from Q(z|X), sample eps = N(0,I) # z = z_mean + sqrt(var)*eps def sampling(args): """Reparameterization trick by sampling fr an isotropic unit Gaussian. # Arguments args (tensor): mean and log of variance of Q(z|X) # Returns z (tensor): sampled latent vector """ z_mean, z_log_var = args batch = K.shape(z_mean)[0] dim = K.int_shape(z_mean)[1] # by default, random_normal has mean=0 and std=1.0 epsilon = K.random_normal(shape=(batch, dim)) return z_mean + K.exp(0.5 * z_log_var) * epsilon def plot_results(models, data, batch_size=50, model_name="vae_OCT"): """Plots labels and MNIST digits as function of 2-dim latent vector # Arguments models (tuple): encoder and decoder models data (tuple): test data and label batch_size (int): prediction batch size model_name (string): which model is using this function """ encoder, decoder = models x_test = data os.makedirs(model_name, exist_ok=True) filename = os.path.join(model_name, "vae_mean.png") # display a 2D plot of the digit classes in the latent space z_mean, _, _ = encoder.predict(x_test, batch_size=batch_size) #original dataset #train filenames = glob.glob("./NORMAL_resize_100_1_0506/*.jpeg") X = [] for filename in filenames: img = img_to_array(load_img( filename, color_mode = "grayscale" , target_size=(512,496))) X.append(img) X = np.asarray(X) #test filenames = glob.glob("./NORMAL_resize_0506/*.jpeg") X_test = [] for filename in filenames: img = img_to_array(load_img( filename, color_mode = "grayscale" , target_size=(512,496))) X_test.append(img) X_test = np.asarray(X_test) image_size_width = X.shape[1] image_size_height = X.shape[2] original_dim = 512 * 496 x_train = np.reshape(X, [-1, image_size_width,image_size_height,1]) x_test = np.reshape(X_test,[ -1, image_size_width,image_size_height,1]) x_train = x_train.astype('float32') / 255 x_test = x_test.astype('float32') / 255 print(x_train.shape) print(x_test.shape) # network parameters #input_shape = (original_dim,) input_shape = (image_size_width,image_size_height,1) batch_size = 50 kernel_size = 3 filters = 16 latent_dim = 2 epochs = 100 # VAE model = encoder + decoder # build encoder model inputs = Input(shape=input_shape, name='encoder_input') x = inputs for i in range(4): filters *= 2 x = Conv2D(filters=filters, kernel_size=kernel_size, BatchNormalization = BatchNormalization(),# ここがうまくいかない activation='relu', strides=2,padding='same')(x)

補足情報(FW/ツールのバージョンなど)

Google Colabを使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

TypeError: ('Keyword argument not understood:', 'BatchNormalization')

型エラー: 不明なキーワード引数: BatchNormalization

Conv2D のコンストラクタ引数に BatchNormalization というものはありません。
BatchNormalization を追加する場合は以下のように変更してください。

python

1 x = Conv2D(filters=filters, 2 kernel_size=kernel_size, 3 BatchNormalization = BatchNormalization(),# ここがうまくいかない 4 activation='relu', 5 strides=2,padding='same')(x)

import に以下を追加

python

1from keras.layers import Activation, BatchNormalization

conv -> batch normalization -> relu とする。

python

1 x = Conv2D(filters=filters, 2 kernel_size=kernel_size, 3 strides=2,padding='same')(x) 4 x = BatchNormalization()(x) 5 x = Activation('relu')(x)

投稿2019/05/29 04:00

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SuzuAya

2019/05/29 04:35

早急にご回答いただき、ありがとうございます!! うまくいきました。とても分かりやすくご丁寧なご回答、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問