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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1485閲覧

[python]kerasでの画像認識の処理が進まない.

u847817g

総合スコア4

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/10/27 23:16

前提・実現したいこと

kerasを用いて2入力のCNNを実装したいと考えています.

発生している問題

エラーなどは表示されないのですが,Epoch数が表示されてから一向に処理が進みません.(https://teratail.com/questions/91452 で取り扱われている問題とほぼ同じ状況ですが,こちらは1エポック目すら始まらず,下の四角内の表示から一切動きません.)エラーメッセージも出ないのでどこを調べたらよいかもわからず詰まってしまいました.考えられる問題はどのようなものがあるでしょうか?

Epoch 1/100

該当のソースコード

python

1import numpy as np 2import pandas as pd 3import matplotlib.pyplot as plt 4import os 5import pathlib 6from keras.models import Sequential, load_model, Model 7from keras.layers.convolutional import Conv2D, MaxPooling2D 8from keras.layers.core import Activation, Flatten, Dense, Dropout 9from keras.layers import concatenate 10from keras.optimizers import Adam, Adagrad, RMSprop, SGD 11from keras.utils.np_utils import to_categorical 12from keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau, TensorBoard 13from keras.datasets import cifar10 14 15class ImageDataGenerator(object): 16 def __init__(self): 17 self.reset() 18 19 def reset(self): 20 self.images1 = [] 21 self.images2 = [] 22 self.labels = [] 23 24 def flow_from_directory(self, directory_pcm ,directory_paf, classes, batch_size=32): 25 classes = {v: i for i, v in enumerate(sorted(classes))} 26 while True: 27 for path_pcm in pathlib.Path(directory_pcm).iterdir(): 28 self.images1 = (np.load(path_pcm)) 29 self.images2 = (np.load(os.path.join(directory_paf,os.path.basename(path_pcm)))) 30 _, y = path_pcm.stem.split('_') 31 self.labels.append(to_categorical(classes[y], len(classes))) 32  33 if len(self.images1) == batch_size: 34 inputs1 = np.asarray(self.images1) 35 inputs2 = np.asarray(self.images2) 36 inputs1 = inputs1.reshape(1,64,64,19).astype("float32") 37 inputs2 = inputs2.reshape(1,64,64,38).astype("float32") 38 targets = np.asarray(self.labels) 39 self.reset() 40 yield [inputs1, inputs2], targets 41 42batch_size=10 43epochs=100 44 45model1 = Sequential() 46model2 = Sequential() 47 48model1.add(Conv2D(64,kernel_size=5,padding='same',activation='relu',input_shape=(64,64,19))) 49model2.add(Conv2D(64,kernel_size=5,padding='same',activation='relu',input_shape=(64,64,38))) 50 51model1.add(Conv2D(64,kernel_size=5,activation='relu')) 52model2.add(Conv2D(64,kernel_size=5,activation='relu')) 53 54model1.add(MaxPooling2D(pool_size=(2,2))) 55model2.add(MaxPooling2D(pool_size=(2,2))) 56 57model1.add(Dropout(0.2)) 58model2.add(Dropout(0.2)) 59 60model1.add(Flatten()) 61model2.add(Flatten()) 62 63model1.add(Dense(256,activation='relu')) 64model2.add(Dense(256,activation='relu')) 65 66merged = concatenate([model1.output,model2.output]) 67output = Dense(1,activation='sigmoid')(merged) 68 69model = Model([model1.input,model2.input],output) 70 71optimizer = Adam(lr = 0.001) 72model.compile( 73 optimizer = optimizer, 74 loss = "binary_crossentropy", 75 metrics = ["accuracy"] 76) 77 78early_stopping = EarlyStopping( 79 monitor='val_loss', 80 patience=10, 81 verbose=1 82) 83 84weights_dir = './weights/' 85if os.path.exists(weights_dir) == False:os.mkdir(weights_dir) 86model_checkpoint = ModelCheckpoint( 87 weights_dir + "val_loss{val_loss:.3f}.hdf5", 88 monitor = 'val_loss', 89 verbose = 1, 90 save_best_only = True, 91 save_weights_only = True, 92 period = 3 93) 94 95reduce_lr = ReduceLROnPlateau( 96 monitor = 'val_loss', 97 factor = 0.1, 98 patience = 3, 99 verbose = 1 100) 101 102logging = TensorBoard(log_dir = "log/") 103 104pcm_train = pathlib.Path('dataset/pcm_train2/') 105paf_train = pathlib.Path('dataset/paf_train2/') 106train_datagen = ImageDataGenerator() 107classes = ['0', '1'] 108 109model.fit_generator( 110 generator=train_datagen.flow_from_directory(pcm_train, paf_train, classes), 111 steps_per_epoch=int(np.ceil(len(list(pcm_train.iterdir()))/ batch_size)), 112 epochs=epochs, 113 verbose=1)

試したこと

・トレーニングデータの正規化
・fit_generatorに与える引数のうちsteps_per_epochが(トレーニングデータの長さ)//(バッチサイズ)になっているかの確認

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問