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

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

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

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

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

Q&A

1回答

403閲覧

No module named models.Alexというエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

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

0グッド

0クリップ

投稿2018/07/13 04:19

編集2018/07/13 07:22

前提・実現したいこと

下記のサイト
https://qiita.com/ohnabe/items/dc915c06ef37a2d30799
を参考にして、adversarial examplesの実行を試みておりますが、
No module named models.Alexというエラーに遭い、行き詰まってしまいました。

当方、python超初心者ですが、解決法をご教授いただけたらと思います。

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

File "create_as.py", line 9, in <module> import models.Alex ImportError: No module named models.Alex

ソースコード

python

1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4import numpy as np 5import chainer 6import chainer.functions as F 7from chainer.links.caffe import CaffeFunction 8import pickle 9import models.Alex 10from PIL import Image 11 12from adv_models.fast_gradient import fast_gradient 13from adv_models.iterative_gradient import iterative_gradient 14from adv_models.iterative_least_likely import iterative_least_likely 15 16 17IMAGENET_MEAN_FILE = "../data/ilsvrc_2012_mean.npy" 18INPUT_IMAGE_SIZE = 227 19 20def load_caffemodel(model_path): 21 caffe_model = CaffeFunction(model_path) 22 return caffe_model 23 24 25def save_models(caffe_model, save_model_path): 26 with open(save_model_path, 'wb') as f: 27 pickle.dump(caffe_model, f) 28 29 30def load_models(save_model_path): 31 with open(save_model_path, 'rb') as f: 32 model = pickle.load(f) 33 return model 34 35 36def copy_model(src, dst): 37 assert isinstance(src, chainer.Chain) 38 assert isinstance(dst, chainer.Chain) 39 for child in src.children(): 40 if child.name not in dst.__dict__: continue 41 dst_child = dst[child.name] 42 if type(child) != type(dst_child): continue 43 if isinstance(child, chainer.Chain): 44 copy_model(child, dst_child) 45 if isinstance(child, chainer.Link): 46 match = True 47 for a, b in zip(child.namedparams(), dst_child.namedparams()): 48 if a[0] != b[0]: 49 match = False 50 break 51 if a[1].data.shape != b[1].data.shape: 52 match = False 53 break 54 if not match: 55 print('Ignore %s because of parameter mismatch' % child.name) 56 continue 57 for a, b in zip(child.namedparams(), dst_child.namedparams()): 58 b[1].data = a[1].data 59 print('Copy %s' % child.name) 60 61 62def create_mean_image_array(pic_mean_data_path, size_image): 63 mean_data = np.load(pic_mean_data_path) 64 mean_data = Image.fromarray(mean_data.astype(np.uint8), 'RGB').resize((size_image, size_image)) 65 mean_data = np.asarray(mean_data).astype(np.float32) 66 return mean_data 67 68 69def substract_mean_image(target_array, mean_array): 70 # mean_value: 104 B 71 # mean_value: 117 G 72 # mean_value: 123 R 73 result_array = target_array - mean_array 74 return result_array 75 76 77def add_mean_image(target_array, mean_array): 78 result_array = target_array + mean_array 79 return result_array 80 81 82def resize_image(original_image_path): 83 img = Image.open(original_image_path) 84 print("original image format:{} {}".format(img.size, img.mode)) 85 86 img_resize = img.resize((INPUT_IMAGE_SIZE, INPUT_IMAGE_SIZE)) 87 print("resize image format:{} {}".format(img_resize.size, img_resize.mode)) 88 return img_resize 89 90 91def format2chainer(img_data): 92 # RGB to GBR 93 arrayImg = np.asarray(img_data).astype(np.float32)[:, :, ::-1] 94 # HWC to CWH 95 arrayImg = arrayImg.transpose(2, 0, 1) 96 # 3-dimensions to 4-dimensions 97 arrayImg = arrayImg.reshape((1,) + arrayImg.shape) 98 return arrayImg 99 100 101def format2orig(chainer_img): 102 # CWH to HWC 103 #orig_image = chainer_img.transpose(1, 2, 0).astype(np.uint8) 104 orig_image = chainer_img.transpose(1, 2, 0) 105 # BGR to RGB 106 orig_image = orig_image[:,:,::-1] 107 return orig_image 108 109 110def create_label_list(label_file_path): 111 label_d = {} 112 with open(label_file_path, "r") as f: 113 for line in f: 114 line = line.rstrip("\n").strip(" ").split(":") 115 if len(line) == 2: 116 label_d[int(line[0])] = line[1].strip(" ") 117 return label_d 118 119 120def get_result(predict_result, label_d): 121 prob = np.max(predict_result) 122 label_ind = np.argmax(predict_result) 123 label = label_d[label_ind] 124 return prob, label_ind, label 125 126 127if __name__ == '__main__': 128 #model = load_caffemodel("models/bvlc_alexnet.caffemodel") 129 #save_models(model, "models/alexnet.chainermodel") 130 131 caffe_model = load_models("../models/alexnet.chainermodel") 132 chainer_model = models.Alex.Alex() 133 134 # get label dict 135 label_d = create_label_list("../data/imagenet_label.txt") 136 137 # copy caffe_model W, b to chainer_model 138 copy_model(caffe_model, chainer_model) 139 140 # create mean image array 141 mean_image_array = create_mean_image_array(IMAGENET_MEAN_FILE, INPUT_IMAGE_SIZE) 142 143 # predict target_image 144 orig_img = resize_image("../data/panda2.jpeg") 145 orig_img.show() 146 147 orig_array = np.asarray(orig_img) 148 orig_array = substract_mean_image(orig_array, mean_image_array) 149 150 chainer_array = format2chainer(orig_array) 151 152 # apply gradient sign method 153 #adv_array, adv_part_array, orig_result = fast_gradient(chainer_model, chainer_array, eps=8.0) 154 155 # apply iterative gradient sign method 156 #adv_array, adv_part_array, orig_result = iterative_gradient(chainer_model, chainer_array, 157 # eps=8.0, alpha=1.0) 158 159 # apply iterative least likely class method 160 adv_array, adv_part_array, orig_result = iterative_least_likely(chainer_model, chainer_array, 161 eps=8.0, alpha=1.0) 162 least_ind = np.argmin(orig_result) 163 print("least likely category {}".format(label_d[least_ind])) 164 165 # predict original image_result 166 orig_prob, orig_ind, orig_label = get_result(orig_result, label_d) 167 print("predict_original_image: {} predict_prob: {}".format(orig_label.strip(" "), orig_prob)) 168 169 # predict adversarial_image 170 predict_result = F.softmax(chainer_model(adv_part_array)).data 171 part_prob, part_label_ind, part_label = get_result(predict_result, label_d) 172 print("predict_adversarial_perturbations: {} predict_prob: {}".format(part_label, part_prob)) 173 174 predict_result = F.softmax(chainer_model(adv_array)).data 175 adv_prob, adv_label_ind, adv_label = get_result(predict_result, label_d) 176 print("predict_adversarial_examples: {} predict_prob: {}".format(adv_label, adv_prob)) 177 print("original category prob with adv_images {}".format(predict_result[0][orig_ind])) 178 179 # show adv_image 180 adv_array = format2orig(adv_array[0]) 181 adv_part_array = format2orig(adv_part_array[0]) 182 adv_array = add_mean_image(adv_array, mean_image_array) 183 adv_array = np.clip(adv_array, 0, 255) 184 adv_array = adv_array.astype(np.uint8) 185 Image.fromarray(adv_array, 'RGB').show() 186 Image.fromarray(adv_part_array, 'RGB').show()

補足情報(FW/ツールのバージョンなど)

開発環境
macOS High Sierra 10.13.1
python 2.7.10
chainer 4.2.0

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

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

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

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

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

CHERRY

2018/07/13 04:55

エラーメッセージだけではなく、create_as.py のソースコードも質問に記載してください。
退会済みユーザー

退会済みユーザー

2018/07/13 07:28

CHERRY様、ご指摘ありがとうございます。ソースコードの方も追加致しました。
guest

回答1

0

モジュールが足りていないように見受けます。

ソースコードはどうやって作ったのでしょうか?
参考にしたサイトがあれば、そのサイトに書いてあるファイルをきちんと作っているかを確認したほうが良いかと思います。

投稿2018/07/13 14:32

mtb_beta

総合スコア181

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問