前提・実現したいこと
下記URLのコードを参考に、手書き文字認識プログラムを作成したいです。
https://github.com/yukoba/CnnJapaneseCharacter
(紹介記事:https://qiita.com/yukoba/items/7a687e44395783eb32b1)
conda環境にて「learn.py」を実行したところ、以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "learn.py", line 32, in <module> if K.image_dim_ordering() == 'th': AttributeError: module 'keras.backend' has no attribute 'image_dim_ordering'
該当のソースコード
# This code is based on # https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py # https://github.com/fchollet/keras/blob/master/examples/cifar10_cnn.py import numpy as np #import scipy.misc from PIL import Image from keras import backend as K from keras import initializers from keras.layers import Convolution2D, MaxPooling2D from keras.layers import Dense, Dropout, Activation, Flatten from keras.models import Sequential from keras.preprocessing.image import ImageDataGenerator from keras.utils import np_utils from sklearn.model_selection import train_test_split nb_classes = 72 # input image dimensions img_rows, img_cols = 32, 32 # img_rows, img_cols = 127, 128 ary = np.load("hiragana.npz")['arr_0'].reshape([-1, 127, 128]).astype(np.float32) / 15 X_train = np.zeros([nb_classes * 160, img_rows, img_cols], dtype=np.float32) for i in range(nb_classes * 160): X_train[i] = np.array(Image.fromarray(ary[i]).resize((img_cols,img_rows))) # X_train[i] = scipy.misc.imresize(ary[i], (img_rows, img_cols), mode='F') # X_train[i] = ary[i] Y_train = np.repeat(np.arange(nb_classes), 160) X_train, X_test, Y_train, Y_test = train_test_split(X_train, Y_train, test_size=0.2) if K.image_dim_ordering() == 'th': X_train = X_train.reshape(X_train.shape[0], 1, img_rows, img_cols) X_test = X_test.reshape(X_test.shape[0], 1, img_rows, img_cols) input_shape = (1, img_rows, img_cols) else: X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1) X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1) input_shape = (img_rows, img_cols, 1) # convert class vectors to binary class matrices Y_train = np_utils.to_categorical(Y_train, nb_classes) Y_test = np_utils.to_categorical(Y_test, nb_classes) datagen = ImageDataGenerator(rotation_range=15, zoom_range=0.20) datagen.fit(X_train) model = Sequential() def my_init(shape, name=None): return initializers.normal(shape, scale=0.1, name=name) # Best val_loss: 0.0205 - val_acc: 0.9978 (just tried only once) # 30 minutes on Amazon EC2 g2.2xlarge (NVIDIA GRID K520) def m6_1(): model.add(Convolution2D(32, 3, 3, init=my_init, input_shape=input_shape)) model.add(Activation('relu')) model.add(Convolution2D(32, 3, 3, init=my_init)) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.5)) model.add(Convolution2D(64, 3, 3, init=my_init)) model.add(Activation('relu')) model.add(Convolution2D(64, 3, 3, init=my_init)) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.5)) model.add(Flatten()) model.add(Dense(256, init=my_init)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) def classic_neural(): model.add(Flatten(input_shape=input_shape)) model.add(Dense(256)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) m6_1() # classic_neural() model.summary() model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) model.fit_generator(datagen.flow(X_train, Y_train, batch_size=16), samples_per_epoch=X_train.shape[0], nb_epoch=400, validation_data=(X_test, Y_test))
試したこと
①32行目「K.image_dim_ordering()」を「K.image_data_format()」に置換
→TypeError: ('Keyword argument not understood:', 'init')
が発生
参考URL:https://github.com/keras-team/keras/issues/12649
②kerasのバージョンを2.2.4にダウン
→AttributeError: module 'tensorflow' has no attribute 'get_default_graph'
が発生
参考URL:https://qiita.com/ryoo/items/89e29ec4cfb956e7af9c
③②のバージョン状態で下記参考URLの①~⑤を実行
→①~③:ImportError: cannot import name 'np_utils' from 'tensorflow.keras.utils'
が発生
④:Could not find a version that satisfies the requirement keras==1.4
が発生
⑤:AttributeError: module 'keras.backend' has no attribute 'image_dim_ordering'
が発生(振出しに戻る)
参考URL:https://qiita.com/white1107/items/67ec0826a07a84442d31
お答えいただける範囲でアドバイスいただければ幸いです。
追加すべき情報等ありましたらご指摘ください。
補足情報(FW/ツールのバージョンなど)
conda 4.9.2
keras 2.3.1
※※同プログラムについて以下URLにて質問させていただきました。当該エラーは解消できたのですが、新たにエラーが発生したため、改めて質問させていただいた次第です。ソースコードからの変更箇所等は下記URLもご参照いただければ幸いです※※
https://teratail.com/questions/315642
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/14 05:50