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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

0回答

177閲覧

Google Colaboratoryでモジュール内の関数、クラスがインポートできない

Sukabo

総合スコア31

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

1クリップ

投稿2020/01/07 00:32

以下のdataset.pyevaluation.pyについて、後者はクラスがインポートできるのに前者はクラスをインポートできません。原因として考えられることは何でしょうか。(ソースコードは一番下に記載しています。)

試しにdir()を用いてモジュールの中身を確認したところ、

dataset

1import dataset 2dir(dataset) 3 4''' 実行結果 5['__builtins__', 6 '__cached__', 7 '__doc__', 8 '__file__', 9 '__loader__', 10 '__name__', 11 '__package__', 12 '__spec__'] 13'''

evaluation

1import evaluation 2dir(evaluation) 3 4''' 実行結果 5['Evaluation', 6 '__builtins__', 7 '__cached__', 8 '__doc__', 9 '__file__', 10 '__loader__', 11 '__name__', 12 '__package__', 13 '__spec__', 14 'matplotlib', 15 'np', 16 'pylab', 17 'test'] 18'''

のように、dataset.pyのDatasetLoaderなどが表示されません。

以下、ソースコードです。

dataset

1import numpy as np 2import cv2 as cv 3import chainer 4import chainer.functions as F 5 6from chainer import cuda 7from pathlib import Path 8 9xp = cuda.cupy 10cuda.get_device(0).use() 11 12class test: 13 def __init__(self): 14 pass 15 16 17class DatasetLoader: 18 def __init__(self, img_path, tag_path): 19 self.img_path = img_path 20 self.tag_path = tag_path 21 self.tag_arr = np.load(self.tag_path, allow_pickle=True) 22 self.dim = self.tag_arr.shape[1] 23 24 self.img_list = list(self.img_path.glob('*.png')) 25 self.img_len = len(self.img_list) 26 27 @staticmethod 28 def _get_fake_tag(dims, threshold=0.75): 29 prob2 = np.random.rand(9) 30 tags = np.zeros((dims)).astype("f") 31 tags[:] = 0 32 tags[np.argmax(prob2)] = 1.0 33 34 return tags 35 36 @staticmethod 37 def _prepare_img(path, size=128): 38 img = cv.imread(str(path)) 39 img = cv.resize(img, (size, size), interpolation=cv.INTER_CUBIC) 40 if np.random.randint(2): 41 img = img[:, ::-1, :] 42 img = img[:, :, ::-1] 43 img = (img.transpose(2, 0, 1) - 127.5) / 127.5 44 45 return img 46 47 @staticmethod 48 def _variable(array_list): 49 return chainer.as_variable(xp.array(array_list).astype(xp.float32)) 50 51 def _noise_generate(self, batchsize): 52 vis_noise = xp.random.uniform(-1, 1, (batchsize, 128)).astype(xp.float32) 53 zvis = chainer.as_variable(vis_noise) 54 ztag = self._get_fake_tag_batch(batchsize, self.dim, threshold=0.75) 55 ztag = chainer.as_variable(ztag) 56 57 return zvis, ztag 58 59 def _get_fake_tag_batch(self, batchsize, dims, threshold=0.75): 60 tags = xp.zeros((batchsize, dims)).astype("f") 61 for i in range(batchsize): 62 tags[i] = xp.asarray(self._get_fake_tag(dims, threshold)) 63 64 return tags 65 66 def train(self, batchsize): 67 img_box = [] 68 tag_box = [] 69 for _ in range(batchsize): 70 rnd = np.random.randint(self.img_len) 71 filename = f"face_{rnd}.png" 72 img_path = self.img_path/Path(filename) 73 img = self._prepare_img(img_path) 74 tag = self.tag_arr[rnd] 75 tag[tag < 0] = 0 76 77 img_box.append(img) 78 tag_box.append(tag) 79 80 img = self._variable(img_box) 81 tag = self._variable(tag_box) 82 zvis, ztag = self._noise_generate(batchsize) 83 84 return (zvis, ztag, img, tag) 85 86 def valid(self, batchsize): 87 zvis, ztag = self._noise_generate(batchsize) 88 89 return (zvis, ztag) 90

evaluation

1import numpy as np 2 3import matplotlib 4matplotlib.use('Agg') 5import pylab 6 7class test: 8 def __init__(self): 9 pass 10 11 12class Evaluation: 13 def __init__(self): 14 pass 15 16 @staticmethod 17 def _coordinate(array): 18 tmp = np.clip(array * 127.5 + 127.5, 0, 255).transpose(2, 0, 1).astype(np.uint8) 19 20 return tmp 21 22 def __call__(self, y, outdir, epoch, testsize): 23 width = np.sqrt(testsize) 24 25 pylab.rcParams['figure.figsize'] = (16.0, 16.0) 26 pylab.clf() 27 28 for index in range(testsize): 29 tmp = np.clip(y[index]*127.5 + 127.5, 0, 255).transpose(1, 2, 0).astype(np.uint8) 30 pylab.subplot(width, width, index + 1) 31 pylab.imshow(tmp) 32 pylab.axis('off') 33 pylab.savefig(f"{outdir}/visualize_{epoch}.png") 34

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問