前提・実現したいこと
下記URLのコードを参考に、手書き文字認識プログラムを作成したいです。
https://github.com/yukoba/CnnJapaneseCharacter
(紹介記事:https://qiita.com/yukoba/items/7a687e44395783eb32b1)
conda環境にて「learn.py」を実行したところ、以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "/home/user/anaconda3/lib/python3.8/site-packages/PIL/Image.py", line 2751, in fromarray mode, rawmode = _fromarray_typemap[typekey] KeyError: ((1, 1, 128), '<f4') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "learn.py", line 25, in <module> X_train[i] = np.array(Image.fromarray(ary).resize(img_cols,img_rows)) File "/home/takeru/anaconda3/lib/python3.8/site-packages/PIL/Image.py", line 2753, in fromarray raise TypeError("Cannot handle this data type: %s, %s" % typekey) from e TypeError: Cannot handle this data type: (1, 1, 128), <f4
該当のソースコード
python
1ary = np.load("hiragana.npz")['arr_0'].reshape([-1, 127, 128]).astype(np.float32) / 15 2X_train = np.zeros([nb_classes * 160, img_rows, img_cols], dtype=np.float32) 3for i in range(nb_classes * 160): 4 X_train[i] = np.array(Image.fromarray(ary).resize((img_cols,img_rows))) 5 # X_train[i] = ary[i] 6Y_train = np.repeat(np.arange(nb_classes), 160)
試したこと
同様の質問がteratailに記載されていたので(https://teratail.com/questions/271765)、参考にさせていただき上記コードを以下の通り修正いたしました。(float32→uint8に置換)
python
1ary = np.load("hiragana.npz")['arr_0'].reshape([-1, 127, 128]).astype(np.uint8) / 15 2X_train = np.zeros([nb_classes * 160, img_rows, img_cols], dtype=np.uint8)
実行結果、エラーメッセージが「<f4」から「<f8」に変わりました。
対応している型に誤りがあることは分かるのですが、どのように修正すべきかをつかみかねている状況です。
お答えいただける範囲でアドバイスいただければ幸いです。
追加すべき情報等ありましたらご指摘ください。
補足情報
・バージョン
conda 4.9.2
・ソースコードからの修正箇所(上記「試したこと」以外)
ソースコードのまま実行したとき下記エラーが発生したため、下記の通り変更を加えています。
(エラー①)
ImportError: cannot import name 'initializations'
(変更①)
initializations→initializersに置換
参考URL:https://github.com/keras-team/keras/issues/6278
(エラー②)
AttributeError: module 'scipy.misc' has no attribute 'imresize'
(変更②)
import scipy.misc→from PIL import Imageに置換
X_train[i] = scipy.misc.imresize(ary[i], (img_rows, img_cols), mode='F')
→
X_train[i] = np.array(Image.fromarray(ary).resize((img_cols,img_rows)))
に置換
参考URL:https://qiita.com/enoughspacefor/items/678226cd149d6afec72c
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/13 06:22