Chainer:’module’ object has no attribute ‘mean_absolute_error’

Published on:
Last updated:

This post is also available in: 日本語 (Japanese)

Chainerでディープラーニングのコードを走らせる際に以下のようなエラーが出て困った事がありましたので、メモ代わりに書いています。

AttributeError: 'module' object has no attribute 'mean_absolute_error'

原因

この mean_absolute_error() は 以下のリンクにあるように v1.18.0 のchainerにはモジュールとして組み込まれていないのが原因らしいです。
https://github.com/chainer/chainer/issues/1987

対策

以下のgithubのページから mean_absolute_error.py をダウンロードして、自分でモジュールとして組み込むと動作します(検証済み)。
https://github.com/chainer/chainer/blob/master/chainer/functions/loss/mean_absolute_error.py

mean_absolute_error.py の置き場所は、上記のページのとおりにして
chainer>functions>loss フォルダ以下に mean_absolute_error.py として作成します。

モジュールの呼び出し方は、lossフォルダ以下の __init__.py を修正する方法でもよさげですが、mean_absolute_error.py を自分で付け足したことを後で分かるように明示したかったので、以下のように呼び出しました。
呼び出し方によってコードを修正する必要がありますので、ご注意ください。

from chainer.functions.loss.mean_absolute_error import mean_absolute_error
No tags for this post.

About
Kuniyoshi Takemoto is the founder of Amelt.net LLC, and editor of this blog(www.amelt.net).Learn more and follow me on LinkedIn.