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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

0回答

1481閲覧

ディープラーニングの層を追加したい

sasakisasayama

総合スコア10

Python 3.x

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

1クリップ

投稿2016/11/24 02:26

編集2016/11/25 03:57

###前提・実現したいこと
Kerasを用いて6人のアニメキャラの顔を識別しようとしています。
簡単な学習させるためのネットワークはできたのですが、#でコメントアウトしてある層を追加しようとするとエラーが出て学習が開始出来ません。入力している配列はこんな感じです。イメージ説明

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

ValueError: Filter must not be larger than the input: (3, 3) Input: (2, 16)

###該当のソースコード

import numpy as np np.random.seed(20160715) # シード値を固定 from keras.layers.convolutional import Convolution2D from keras.layers.convolutional import MaxPooling2D from keras.layers.core import Activation from keras.layers.core import Dense, Dropout, Flatten from keras.models import Sequential from keras.callbacks import EarlyStopping from keras.callbacks import LearningRateScheduler from keras.optimizers import Adam from keras.optimizers import SGD import sklearn.cross_validation from keras.utils.visualize_util import plot nb_classes = 6 img_rows, img_cols = 32, 32 X_test=np.load('anime_data.npy') Y_target=np.load('anime_target.npy') a_train, a_test, b_train, b_test = sklearn.cross_validation.train_test_split(X_test,Y_target) model = Sequential() model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=(3, img_rows, img_cols))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2), border_mode='same')) #model.add(Convolution2D(32, 3, 3, border_mode='same')) #model.add(Activation('relu')) #model.add(MaxPooling2D(pool_size=(2, 2), border_mode='same')) #model.add(Dropout(0.5)) model.add(Flatten()) model.add(Dense(256)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) init_learning_rate = 1e-2 opt = SGD(lr=init_learning_rate, decay=0.0, momentum=0.9, nesterov=False) model.compile(loss='sparse_categorical_crossentropy', optimizer=opt, metrics=["acc"]) early_stopping = EarlyStopping(monitor='val_loss', patience=3, verbose=0, mode='auto') lrs = LearningRateScheduler(0.01) hist = model.fit(a_train,b_train, batch_size=128, nb_epoch=1, validation_split=0.1, verbose=1) model_json_str = model.to_json() open('anime_model.json', 'w').write(model_json_str) model.save_weights('anime_model.h5') score=model.evaluate(a_test, b_test, verbose=0) print(score[1]) plot(model, to_file='model.png', show_shapes=True)

###試したこと
正常動作しているときの層を通過後のoutputとinputを画像として出力してみたところ下の画像のようになっていました。ここでプーリング層の後は画像の縦横のサイズが半分になると思ってるのですが、ここでは片側しか半分になってなく、関係ないところが3から2にかわっています。これはプログラムの書き方が悪いのかと思ったのですが自分には間違いがわかりませんでした。
model

###補足情報(言語/FW/ツール等のバージョンなど)
python 3.5.2
Keras 1.1.0
numpy 1.11.2
h5py 2.6.0
scikit-learn 0.18

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問