AttributeError: 'str' object has no attribute 'decode'
【エラー概要】’str’ object has no attribute ‘decode’ に関して
このエラーは「Keras」や「sklearn」でエラーが発生します。
まずは「Keras」で発生するエラーから解説します。
実際のエラーが発生するケースとしまして、例えば
AI Academyの「Deep Learningで犬・猫を分類してみよう」の「推論フェーズ」節の下記のコードで、「h5py」というライブラリの最新バージョンが3.1.0がインストールされている環境では「AttributeError: ‘str’ object has no attribute ‘decode’」というエラーが発生してしまいます。
下記のプログラムは、学習モデルを読み込むコードですが、「h5py」のバージョンを適切にする必要があります。
model = load_model(keras_param)
解決策
下記のバージョンをインストールすることで、「AttributeError: ‘str’ object has no attribute ‘decode’」のエラーが解決されます。
!pip install keras==2.2.5
!pip install tensorflow==1.14.0
!pip install h5py==2.10.0
上記の方法で以下のエラーが発生する場合があります。
ValueError: Unknown initializer: GlorotUniform
その場合、一度以下のように変更してみてください。
変更方法(1)
# from tensorflow import keras
import keras
変更方法(2)
import tensorflow as tf
model = tf.keras.models.load_model('model.h5')
もし上記でも解決しない場合は、「チャットサポートプラン」にて講師に直接お聞きしてみてください。
続いて「skleran」の場合です。
sklearnの最新バージョンなどを利用している中で、例えば分類タスクをロジスティック回帰モデルを構築した際に今回のエラーが発生する場合があります。
from sklearn.linear_model import LogisticRegression
# 学習
model = LogisticRegression()
model.fit(X_train, y_train)
・エラーメッセージ
AttributeError: 'str' object has no attribute 'decode'
このような場合、LogisticRegression()の引数に、solver=’liblinear’を指定することでエラーが表示されなくなります。
from sklearn.linear_model import LogisticRegression
# 学習
model = LogisticRegression(solver='liblinear')
model.fit(x_train, y_train)
もしくは以下のようにsolverを変えることでも解決できます。
from sklearn.linear_model import LogisticRegression
# 学習
model = LogisticRegression(solver='sag')
model.fit(x_train, y_train)
これは、LogisticRegression()の引数のsolverにはデフォルトで、solver=’lbfgs’が指定されており、このsolverのバグによるものです。
質問し放題の環境で1日あたりの費用194円で学べる!業界最安値オンラインAIプログラミングスクールAI Academy Bootcamp
AI Academy Bootcampの「オンデマンド動画+チャットサポートプラン」は6ヶ月質問し放題で受講料が35,000円(税込)でご受講頂けます。
1日の受講費用換算で、なんと194円でご受講頂けます。
450種類のオリジナルテキストコンテンツに加え、5つの動画コース(AIプランナーコース、初めてのPythonプログラミング、Pythonプログラミング入門コース、データサイエンティストコース、機械学習エンジニアコース)もご受講頂けます。
業界最安値で、どこよりもお得に、効率よくAIスキルを身に付けたい方、AI人材として転職したい方は是非ご受講ご検討ください。