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

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

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

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

Q&A

解決済

1回答

238閲覧

UnicodeEncodeErrorを解決したい

unu_tsk14

総合スコア10

Python

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

0グッド

0クリップ

投稿2020/03/26 05:38

前提・実現したいこと

以下のWebページの内容の追実装を行っていました
「画像認識で「綾鷹を選ばせる」AIを作る」
URL:https://qiita.com/tomo_20180402/items/e8c55bdca648f4877188

すると以下のようなエラーが発生し,解決できず苦戦しています。

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

Webページ内の「(3)綾鷹を選ばせるプログラムを作る」のコードを実行すると以下のエラー文が出力されました

Traceback (most recent call last): File "D:\user1\test\Estimation.py", line 11, in <module> model.load_weights('‪D:/user1/test/tea_predict.hdf5') File "C:\Users\XXX\AppData\Local\conda\conda\envs\user1\lib\site-packages\keras\engine\network.py", line 1157, in load_weights with h5py.File(filepath, mode='r') as f: File "C:\Users\XXX\AppData\Local\conda\conda\envs\user1\lib\site-packages\h5py\_hl\files.py", line 309, in __init__ name = filename_encode(name) File "C:\Users\XXX\AppData\Local\conda\conda\envs\user1\lib\site-packages\h5py\_hl\compat.py", line 114, in filename_encode return filename.encode(WINDOWS_ENCODING, "strict") UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: invalid character

該当のソースコード

Python

1#綾鷹を選ばせるプログラム 2 3from keras import models 4from keras.models import model_from_json 5from keras.preprocessing import image 6import numpy as np 7 8#保存したモデルの読み込み 9model = model_from_json(open('保存先のフォルダ/tea_predict.json').read()) 10#保存した重みの読み込み 11model.load_weights('保存先のフォルダ/tea_predict.hdf5') 12 13categories = ["綾鷹","お〜いお茶 抹茶入り","なごみ","お〜いお茶 新茶","綾鷹 茶葉のあまみ", 14 "お〜いお茶","伊右衛門","お〜いお茶 濃い茶","生茶","お〜いお茶 新緑"] 15 16#画像を読み込む 17img_path = str(input()) 18img = image.load_img(img_path,target_size=(250, 250, 3)) 19x = image.img_to_array(img) 20x = np.expand_dims(x, axis=0) 21 22#予測 23features = model.predict(x) 24 25#予測結果によって処理を分ける 26if features[0,0] == 1: 27 print ("選ばれたのは、綾鷹でした。") 28 29elif features[0,4] == 1: 30 print ("選ばれたのは、綾鷹(茶葉のあまみ)でした。") 31 32else: 33 for i in range(0,10): 34 if features[0,i] == 1: 35 cat = categories[i] 36 message = "綾鷹を選んでください。(もしかして:あなたが選んでいるのは「" + cat + "」ではありませんか?)" 37 print(message)

試したこと

別記事に2バイト文字が含まれているのが原因ではないかという事が書かれていたので,パス内の2バイト文字(全角文字?)をすべて英語表記しましたが,解決しませんでした。

###機器情報
OS:Windows10
IDE:Spyder4.0.1

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

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

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

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

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

hayataka2049

2020/03/26 06:44

実際のパスに全角文字は含まれますか? また、英語表記はどのようにしたのでしょうか。
unu_tsk14

2020/03/26 06:50

コメントありがとうございます。 実際のパスに全角文字は含まれていません。 英語表記は「お茶」ならば「tea」といった具合に表記を変更しました。
hayataka2049

2020/03/26 06:52

model.load_weights('保存先のフォルダ/tea_predict.hdf5') などをそのまま実行しているってこともないですよね?
unu_tsk14

2020/03/26 06:56

はい。そういった部分は先ほどの英語表記にも配慮しつつ実際のパスを書いています。
guest

回答1

0

ベストアンサー

model.load_weights('‪D:/user1/test/tea_predict.hdf5')

'‪D:/user1/test/tea_predict.hdf5'Dの手前に文字U+202Aが含まれていますので削除して再実行してみてください。

投稿2020/03/27 22:21

can110

総合スコア38266

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

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

unu_tsk14

2020/03/30 04:26

回答ありがとうございます。 ()内の「’」を「”」に置き換えたところ,このエラーは解消いたしました。 ありがとうございます。
unu_tsk14

2020/03/30 04:57

先ほどのエラーは解決したのですが,同プログラムにおいて message = "綾鷹を選んでください。(もしかして:あなたが選んでいるのは「" + cat + "」ではありませんか?)" の行で NameError: name 'cat' is not defined というエラーが発生しました。こちらの問題の解決法についてご助言をいただきたいです
can110

2020/03/30 07:18

コードは確認していませんが、if features[0,i] == 1:の条件を満たしていないのではないでしょうか?
unu_tsk14

2020/03/30 09:48

その通りでした。 初歩的な質問に答えてくださりありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問