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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

Q&A

1回答

1050閲覧

Pythonのコードでのエラーを解消したいです。

oyakata0702

総合スコア0

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

0グッド

0クリップ

投稿2020/11/11 13:13

編集2020/11/11 16:29

前提・実現したいこと

ccaを用いたモダリティ検索のコードを実行すると以下のようなエラーがでました。
このエラーを解消する方法が知りたいです。

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

AttributeErrorが発生します。

エラーメッセージ Traceback (most resent call last): File "run_train.py", line 85, in <module> layers = model.build_model(show_model=args.show_architecture) AttributeError: 'function' object has no attribute 'build_model'

該当のソースコード

Python3.8

ソースコード from __future__ import print_function import os try: import cPickle as pickle except ImportError: import pickle import argparse from cca_layer.utils.data import load_iapr, load_audio_score from cca_layer.config.settings import EXP_ROOT from cca_layer.utils.plotting import BColors col = BColors() def select_model(model_path): """ select model and train function """ model_str = os.path.basename(model_path) print("1", model_str) model_str = model_str.split('.py')[0] exec('from models import ' + model_str + ' as model') print("2", model_str) from utils.train_utils import fit select_model.EXP_NAME = model_str return select_model, fit def select_data(data_name, seed=23): """ select train data """ if str(data_name) == "iapr": data = load_iapr(seed=seed) elif str(data_name) == "audio_score": data = load_audio_score(seed=seed) else: pass return data if __name__ == '__main__': """ main """ parser = argparse.ArgumentParser(description='Train multi-modality model.') parser.add_argument('--model', help='select model to train.') parser.add_argument('--data', help='select data for training.') parser.add_argument('--seed', help='query direction.', type=int, default=23) parser.add_argument('--no_dump', help='do not dump model file.', action='store_true') parser.add_argument('--tag', help='add tag to grid search dump file.', type=str, default=None) parser.add_argument('--show_architecture', help='print model architecture.', action='store_true') args = parser.parse_args() if not os.path.exists(EXP_ROOT): os.makedirs(EXP_ROOT) model, fit = select_model(args.model) print("\nLoading data...") data = select_data(args.data, args.seed) out_path = os.path.join(os.path.join(EXP_ROOT), model.EXP_NAME) dump_file = 'params.pkl' if args.tag is None else 'params_%s.pkl' % args.tag dump_file = os.path.join(out_path, dump_file) log_file = 'results.pkl' if args.tag is None else 'results_%s.pkl' % args.tag log_file = os.path.join(out_path, log_file) print("\nBuilding network...") layers = model.build_model(show_model=args.show_architecture) //該当箇所 dump_file = None if args.no_dump else dump_file train_batch_iter = model.train_batch_iterator(model.BATCH_SIZE) valid_batch_iter = model.valid_batch_iterator() layers, va_loss = fit(layers, data, model.objectives, train_batch_iter=train_batch_iterator, valid_batch_iter=valid_batch_iterator, num_epochs=model.MAX_EPOCHS, patience=model.PATIENCE, learn_rate=model.INI_LEARNING_RATE, update_learning_rate=model.update_learning_rate, compute_updates=model.compute_updates, l_2=model.L2, l_1=model.L1, exp_name=model.EXP_NAME, out_path=out_path, dump_file=dump_file, log_file=log_file, refinement_steps=model.REFINEMENT_STEPS, lr_multiplier=model.LR_MULTIPLIER, do_raise=True)

試したこと

modelをmodel()にしてみても解消されなかったです。
プログラミング初心者すぎて直しようもなかったです。
よろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/11/11 13:58

ソースコードを ``` (ここに貼り付け) ``` とすると見やすくなると思います。
oyakata0702

2020/11/11 14:12

了解です!ありがとうございます!
guest

回答1

0

def select_model(model_path):内でreturn select_model, fitしているのでselect_model()関数がmodelに代入されていると思います。モデルを返すようにすれば良いかと思います。

投稿2020/11/12 00:19

meg_

総合スコア10580

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

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

oyakata0702

2020/11/12 04:24

回答ありがとうございます。 しかし、return model, fitにしてモデルを返すと、 model.EXP_NAME = model_str のところで、 NameError: name 'model' is not defined とエラーしてしまいます。 この対処方法も教えてくれると助かります。
meg_

2020/11/12 05:24

> exec('from models import ' + model_str + ' as model') の後に「model = locals()['model']」を追加してはどうでしょうか?
oyakata0702

2020/11/12 12:59

ありがとうございます。 試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問