Giter VIP home page Giter VIP logo

pytorch_advanced's People

Contributors

c-bata avatar kentaroy47 avatar ogawa-yutaro avatar shukob avatar yutaroogawa avatar yutayamazaki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pytorch_advanced's Issues

【第二章】p.89 Dbox 出力部分の実装に関しての質問

初めまして。表題の件に関しまして、二点ほど質問がございます。

  1. default box のサイズ S_k に関してですが、原著論文の方をあたってみますと、

S_k = S_min + (S_max - S_min)*(k-1) / (m-1)
(m; 特徴マップの数、k は1~mの整数、S_min = 0.2, S_max = 0.9)

と書かれていて、画像サイズ (300*300) に対する相対座標系で全て記述できるように思います。
一方、本書の実装では、予め min_size と max_size を規定した上で画像サイズ 300 で割るという実装になっていますが、これには何か意図がございますか?
また、DBox の中心座標に関しても、f_k として feature_size の値をそのまま採用すれば特徴量マップの各pixelの中心座標がとれ、原著論文もそのような記述であるように思うのですが、同様の実装になっている点も併せてご回答いただけると幸いです。

  1. 本書自体の内容とは直接関係がないかもしれませんが、アスペクト比 1 の DBox のサイズに関して、k = 6 の時、

S'k = sqrt(S_k*S(k+1))

これが定義できないように思うのですが、これに関してご教授いただけると幸いです。原著論文にも何も書かれておりませんので。。。

以上、よろしくお願いいたします。

【誤植】【2-2-3_Dataset_DataLoader.ipynb】初版:p.71 **コード部分

【場所】【2-2-3_Dataset_DataLoader.ipynb】初版:p.71 **コード部分
【訂正】

# 画像の読み込み OpenCVを使用
ind = 1
image_file_path = train_img_list[ind]

  ↓

# 画像の読み込み OpenCVを使用
ind = 1
image_file_path = val_img_list[ind]

val_img_list[ind]と書くところが、train_img_list[ind]になっていました。
申し訳ございません。

第1章】P8の誤植

お世話になります。

第1章P8のclassifierモジュールの出力数に関する記述が謝っていると思われますのでご確認いただければと思います。

【指摘箇所】
最初の全結合層は入力の要素数が25,088、出力数が409です。
             ↓
最初の全結合層は入力の要素数が25,088、出力数が4096です。

【第7章】make_folders_and_data_downloads.ipynb、word2vecの日本語学習済みモデル(東北大学 乾・岡崎研究室)がダウンロードできません

場所:【第7章】make_folders_and_data_downloads.ipynb

の以下のセル。

# word2vecの日本語学習済みモデル(東北大学 乾・岡崎研究室)をダウンロード。時間が15分ほどかかります

url = "http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/data/20170201.tar.bz2"
save_path = "./data/20170201.tar.bz2"
if not os.path.exists(save_path):
    urllib.request.urlretrieve(url, save_path)

東北大学 乾・岡崎研究室のサイトが落ちていて、19年8月25日(08:30)現在つながりません。

サイトが復帰するまで待つしかない状況です。

※ http://www.cl.ecei.tohoku.ac.jp/
は2019年3月以前のアーカイブです

※ 2019年3月移行の移動先のhttps://www.nlp.ecei.tohoku.ac.jp/
もつながりませんね。

【第1章】【1-3_transfer_learning.ipynb】にてエラーが発生します(UnboundLocalError: local variable 'photoshop' referenced before assignment)

対象ファイル:1-3_transfer_learning.ipynb

学習の途中でエラーが発生します。

どう対応すれば良いでしょうか?

UnboundLocalError: local variable 'photoshop' referenced before assignment

  File "train.py", line 416, in <module>
    trained_net = train_model(net, dataloaders_dict, criterion, optimizer, num_epochs=num_epochs)
  File "train.py", line 368, in train_model
    for inputs, labels in tqdm(dataloaders_dict[phase]):
  File "/anaconda/envs/py36/lib/python3.6/site-packages/tqdm/_tqdm.py", line 1005, in __iter__
    for obj in iterable:
  File "/anaconda/envs/py36/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 560, in __next__
    batch = self.collate_fn([self.dataset[i] for i in indices])
  File "/anaconda/envs/py36/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 560, in <listcomp>
    batch = self.collate_fn([self.dataset[i] for i in indices])
  File "train.py", line 245, in __getitem__
    img = Image.open(img_path)  # [高さ][幅][色RGB]
  File "/anaconda/envs/py36/lib/python3.6/site-packages/PIL/Image.py", line 2690, in open
    im = _open_core(fp, filename, prefix)
  File "/anaconda/envs/py36/lib/python3.6/site-packages/PIL/Image.py", line 2676, in _open_core
    im = factory(fp, filename)
  File "/anaconda/envs/py36/lib/python3.6/site-packages/PIL/JpegImagePlugin.py", line 783, in jpeg_factory
    im = JpegImageFile(fp, filename)
  File "/anaconda/envs/py36/lib/python3.6/site-packages/PIL/ImageFile.py", line 103, in __init__
    self._open()
  File "/anaconda/envs/py36/lib/python3.6/site-packages/PIL/JpegImagePlugin.py", line 373, in _open
    handler(self, i)
  File "/anaconda/envs/py36/lib/python3.6/site-packages/PIL/JpegImagePlugin.py", line 139, in APP
    self.info["photoshop"] = photoshop
UnboundLocalError: local variable 'photoshop' referenced before assignment

【誤植】【第3章】【p.154】初版:本文中の脱字(く)

【場所】

  • 初版
  • p.154の本文

【訂正】
「大きくなる」の「く」が抜けているようです。

誤)

しかしながら、実際には深いネットワークの方が浅いネットワークよりも訓練誤差が大きなる現象が発生することがあり

正)

しかしながら、実際には深いネットワークの方が浅いネットワークよりも訓練誤差が大きくなる現象が発生することがあり

【第4章】【4-5_TensorBoardX.ipynb】にて実行するとエラーが出る

TensorBoardX.ipynbを実行したところ、エラーが出てしまいました。

torch=1.2.0
tensorflow=1.14
tensorboardx=1.8

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-cd7a37fd2d55> in <module>()
     13 # 4. OpenPoseのインスタンスnetに対して、ダミーデータである
     14 # dummy_imgを流したときのgraphをwriterに保存させます
---> 15 writer.add_graph(net, (dummy_img, ))
     16 writer.close()
     17 

~/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/tensorboardX/writer.py in add_graph(self, model, input_to_model, verbose, **kwargs)
    695                     print('add_graph() only supports PyTorch v0.2.')
    696                     return
--> 697             self._get_file_writer().add_graph(graph(model, input_to_model, verbose, **kwargs))
    698         else:
    699             # Caffe2 models do not have the 'forward' method

~/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/tensorboardX/pytorch_graph.py in graph(model, args, verbose, **kwargs)
    324     if verbose:
    325         print(graph)
--> 326     list_of_nodes, node_stats = parse(graph, args, omit_useless_nodes)
    327     # We are hardcoding that this was run on CPU even though it might have actually
    328     # run on GPU. Note this is what is shown in TensorBoard and has no bearing

~/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/tensorboardX/pytorch_graph.py in parse(graph, args, omit_useless_nodes)
    209 
    210         if i < n_inputs:
--> 211             nodes_py.append(NodePyIO(node, 'input'))
    212         else:
    213             nodes_py.append(NodePyIO(node))  # parameter

~/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/tensorboardX/pytorch_graph.py in __init__(self, node_cpp, input_or_output)
     61 class NodePyIO(NodePy):
     62     def __init__(self, node_cpp, input_or_output=None):
---> 63         super(NodePyIO, self).__init__(node_cpp, methods_IO)
     64         try:
     65             tensor_size = node_cpp.type().sizes()

~/anaconda3/envs/pytorch_p36/lib/python3.6/site-packages/tensorboardX/pytorch_graph.py in __init__(self, node_cpp, valid_methods)
     56 
     57             else:
---> 58                 setattr(self, m, getattr(node_cpp, m)())
     59 
     60 

AttributeError: 'torch._C.Value' object has no attribute 'uniqueName'

またpip install tensorflowでは競合エラーが出てそのままインストールできなかったため、
pip install tensorflow==1.12
pip install tensorflow==1.14
両方でインストールを試してみました(同じエラーが出てしまいましたが)。

tensorflowとtorchのバージョン依存性じゃないかと疑ってます。。
実行成功時のpytorch, tensorflow, tensorboardxのバージョン情報など伺って良いでしょうか?

【第1章】【p.23】初版:osp.joinの中身

お世話になります。非常に細かい箇所なのですが、
初版 p 23の

target_path = osp.join(root_path+phase+'/**/*.jpg')
の部分なのですが、

osp.join(=os.path.join)はカンマ区切りでパスをつなげる使い方が一般的だと思うので、

target_path = osp.join(root_path,phase) + '/**/*.jpg'

の方が自然かなと感じました。

*好みが分かれる所だと思うので、修正のご判断はお任せ致します。

【第1章】1.1「学習済みVGGモデル」を使用する方法 ファイル不足? 

[6]

ILSVRCのラベル情報をロードし辞意書型変数を生成します

ILSVRC_class_index = json.load(open('./data/imagenet_class_index.json', 'r'))
ILSVRC_class_index

==
dataフォルダを見ても犬のファイル(goldenretriever-3724972_640.jpg)しか置いてないので、添付し忘れでしょうか?
ダウンロードしたコードを実行してもエラーとなります。
よろしくお願いします。

【第2章】【2-4-5_SSD_model_forward 書籍P84】VGGのMaxPool2Dのceil modeについて

ちょっとした疑問なのですが。。

配布コードでは

def make_vgg():
    layers = []
    in_channels = 3  # 色チャネル数

    # vggモジュールで使用する畳み込み層やマックスプーリングのチャネル数
    cfg = [64, 64, 'M', 128, 128, 'M', 256, 256,
           256, 'MC', 512, 512, 512, 'M', 512, 512, 512]

とceil=TrueのMaxPoolingレイヤを挟んでおりますが、torchvisionのモデルをみると全てのMaxpool2dはceil=Falseになっているようです。
特定レイヤだけceil=Trueにした理由などあるのでしょうか?

print(models.vgg16())

VGG(
  (features): Sequential(
    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU(inplace)
    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU(inplace)
    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (6): ReLU(inplace)
    (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (8): ReLU(inplace)
    (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (11): ReLU(inplace)
    (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (13): ReLU(inplace)
    (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (15): ReLU(inplace)
    (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (18): ReLU(inplace)
    (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (20): ReLU(inplace)
    (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (22): ReLU(inplace)
    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (25): ReLU(inplace)
    (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (27): ReLU(inplace)
    (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (29): ReLU(inplace)
    (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)

【第1章」P.20、trainでオーギュメンテーション非実施のResize設置とtestのcrop必要性

※pytorch_tutorialで理解しました。回答不要です。削除方法がわからず追記しました。申し訳ございません。

kerasからpytorchへ移行中の初心者です。

  • 質問パート:第1章、P20、calss_ImageTransform()

  • 質問箇所:def init(self, resize, mean, sed):
     self.data_transform={・・・

  • 質問1:
     'train': でオーギュメンテーション非実施の場合は
     'test':と同じく、Composeでまずtransforms.Resizeから始めようと考えていますが、
     問題ないでしょうか?

  • 質問2:
     'test':同様に、'train'でオーギュメンテーション非実施の場合、cropも不要と思いますが、
     問題ございませんでしょうか?

お手すきの際、ご回答をお願いします。

【第2章】【2-4-5_SSD_model_forward 書籍P94】BBox cx,cyの計算コード

お世話になります.

【場所】
初版:p.94

【訂正】
下記、BBoxのcxとcyを計算する箇所で、コードの記載が間違っているように思います。
こちらの勘違いでしたら申し訳ありません。

誤)

dbox_list[:, :2] + loc[:, :2] * 0.1 * dbox_list[:, 2:]

cx=cx_d+Δcx * 0.1 * w
cy=cy_d+Δcy * 0.1 * h

正)

dbox_list[:, :2] + loc[:, :2] * 0.1 * dbox_list[:, :2]

cx=cx_d+Δcx * 0.1 * cx_d
cy=cy_d+Δcy * 0.1 * cy_d

【第4章】4.1 P.191 OpenPose PAFsのリンクの数は37本ではなく、19本?  question

PAFsのリンクの数が37本とありますが、19本の間違いじゃないでしょうか。

PAFsには、2点を結ぶベクトルの単位ベクトルが格納されるかと思います。
各リンク、単位ベクトルx方向と、単位ベクトルy方向を作成するので、1つのリンクにつき、2つのチャネルが割り当てられます。なので、チャンネル数は合計38(19×2)になるかと思います。P.186にリンクの図がありますが、この図に加えて、「右耳-右肩」、「左耳-左肩」の2本を加えて合計19本のリンク数になるかなと。

アノテーション作成のソースコードdataloader.pyのget_ground_truth関数を確認しましたが、pafsの配列(mid_1とmid_2)の作成では19個のリンクを作成しているようにみえます。
また、putVecMaps関数で、各リンクで、単位ベクトルのx方向とy方向と2つの配列を作成しているようにみえました。

こちらの勘違いでしたら申し訳ありませんが、確認したく質問させていただきました。

【誤植】【第2章】【p.64, p77, p80, p93】初版:「本節の実装ファイル」の拡張子の誤植(.pynb -> .ipynb)

【場所】

  • 初版
  • 2-2節〜2-5節の各冒頭にある「本節の実装ファイル」

【訂正】
Jupyter Notebookのファイル拡張子が、.ipynbではなく.pynbになっています。

  • p.64
    • 誤: 2-2-3_Dataset_DataLoader.pynb
    • 正: 2-2-3_Dataset_DataLoader.ipynb
  • p.77
    • 誤: 2-2-3_Dataset_DataLoader.pynb
    • 正: 2-2-3_Dataset_DataLoader.ipynb
  • p.80
    • 誤: 2-4-5_SSD_model_forward.pynb
    • 正: 2-4-5_SSD_model_forward.ipynb
  • p.93
    • 誤: 2-4-5_SSD_model_forward.pynb
    • 正: 2-4-5_SSD_model_forward.ipynb

【誤植】【p.373】位置情報テンソルの計算式

お世話になります.

【場所】
初版:p.373

【訂正】
位置情報テンソルの計算式が書籍の説明と書籍中のサンプルコードで異なっていました.原著論文や参考サイトを当たったところ,どうやらサンプルコードの方が正しいようです.

誤)

PE(pos_word, 2i) = sin(pos_word / (1000^(2i/DIM)))
PE(pos_word, 2i + 1) = cos(pos_word / (1000^(2i/DIM)))

正)

PE(pos_word, 2i) = sin(pos_word / (10000^(2i/DIM)))
PE(pos_word, 2i + 1) = cos(pos_word / (10000^(2i/DIM)))

ご確認いただければ幸いです.

【誤植】【第3章】【p.131, p132】初版:図3.1.1と本文中の説明で、画像の対応が異なる

【場所】

  • 初版
  • p.131の図3.1.1
  • p.132の本文中の説明

【訂正】

図3.1.1ではインプット画像とセグメンテーション結果の画像がに並んでいるのですが、本文中はに並んでいることが前提の表現になっています。

誤) p.132

図3.1.1右側のような画像になります

そこで図3.1.1右側ではカラーパレット形式と呼ばれる画像表現手法を使用しています

正) ※ 本文の方を修正する場合

図3.1.1下側のような画像になります

そこで図3.1.1下側ではカラーパレット形式と呼ばれる画像表現手法を使用しています

本書のコードの扱いについて

小川様。こんばんは。
「PyTorchによる発展ディープラーニング」を用いて学習している者です。
コード内で理解できないコードなどに関して質問サイトなどで質問したいと考えているのですが、その際に書籍に記載されているコードを質問自体に記載しても宜しいのでしょうか?

7-5IMDBのDatasetLoaderを実装のところでエラーが出ます。

from torchtext.vocab import Vectors

english_fasttext_vectors = Vectors(name='data/wiki-news-300d-1M.vec')

print("1単語を表現する次元数:", english_fasttext_vectors.dim)
print("単語数:", len(english_fasttext_vectors.itos))

上記コードを実行すると下記エラーが出ます。
RuntimeError: no vectors found at .vector_cache/data/wiki-news-300d-1M.vec

ちなみにpytorchのversion1.3.1です。

【誤植】【第3章:p.141】コメントのサイズ表記

【場所】p.141 「DataLoaderの作成」コードの最後の2行

【訂正】
プログラム自体は間違ってないと思いますが, コメントのサイズが間違えているかと思います.

print(imges.size()) # torch.Size([8, 3, 300, 300])
print(anno_class_imges.size()) # torch.Size([8, 3, 300, 300])

print(imges.size()) # torch.Size([8, 3, 475, 475])
print(anno_class_imges.size()) # torch.Size([8, 475, 475])


非常にわかりやすい本をありがとございます.
よろしくお願いいたします.

【誤植】【第2章:p.90】アスペクト比1の大きいDBoxのサイズのコメント文に誤り

【場所】p.90 「2-4-5_SSD_model_forward.ipynb」コードのDBoxのサイズのコメント文
および、./utils/ssd_model.pyの465 lineのコメント文

【訂正】
コメント文に記載のDBoxのサイズが間違っていました。
ご指摘いただき、誠にありがとうございます。

(コメント文)
アスペクト比1の大きいDBox [cx,cy, width, height]
'max_sizes': [45, 99, 153, 207, 261, 315],

アスペクト比1の大きいDBox [cx,cy, width, height]
'max_sizes': [60, 111, 162, 213, 264, 315],

申し訳ございません。どうぞよろしくお願いいたします。

【第1章】【1-5_fine_tuning.ipynb】にてモデルのロード時に IncompatibleKeysと出力されますがどうしたら良いですか?

対象ファイル:1-5_fine_tuning.ipynb

ファイルの最後にある、
ーーーーー
# PyTorchのネットワークパラメータのロード
load_path = './weights_fine_tuning.pth'
load_weights = torch.load(load_path)
net.load_state_dict(load_weights)
ーーーーー
を実行すると、

IncompatibleKeys(missing_keys=[], unexpected_keys=[])

と出力されます。

・この出力は何でしょうか?どう対応したらよいでしょうか?

どうぞよろしくお願いいたします。

【第2章】【2-4-5_SSD_model_forward】モジュールextraのチャネル数

書籍P85の実装では畳込みのチャネル数がcfg = [256, 512, 128, 256, 128, 256, 128, 256]となっていますが、図2.4.1では6回目と8回目の出力チャネル数は512と表記されています。
どちらが正しいでしょうか?

また、図2.4.1のモジュールextraでは畳込み層の後にReLU層がありますが、書籍P85の実装ではReLU層がありません。
これは、実装が間違えていますか?

以上2点についてよろしくお願いします。

【第1章】【1-1_load_vgg.ipynb】にてVGG-16のモデル構成が書籍と異なっていますか?

対象ファイル:1-1_load_vgg.ipynb

VGG-16モデルをロードすると、書籍では「ネットワークは (features)と(classifier)の2つから構成されています。」と説明されていますが、 (features)と(classifier)の間に(avgpool)があり、3つから構成されています。

・第1章を進めるうえで、この違いは問題になりますでしょうか?
・この (avgpool): AdaptiveAvgPool2d(output_size=(7, 7))は何でしょうか?

どうぞよろしくお願いいたします。

ーー【print(net)の出力結果】ーーーーーーー

VGG(
(features): Sequential(
(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace)
・・・
(29): ReLU(inplace)
(30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(avgpool): AdaptiveAvgPool2d(output_size=(7, 7))
(classifier): Sequential(
(0): Linear(in_features=25088, out_features=4096, bias=True)
(1): ReLU(inplace)
(2): Dropout(p=0.5)
(3): Linear(in_features=4096, out_features=4096, bias=True)
(4): ReLU(inplace)
(5): Dropout(p=0.5)
(6): Linear(in_features=4096, out_features=1000, bias=True)
)
)

ーーーーーーーーー

【誤植】【第3章】【p.171】初版:本文中のtypo(不安的 -> 不安定)

【場所】

  • 初版
  • p.171の本文

【訂正】
挙動が「不安的」とあるのですが、「不安定」ではないでしょうか。
(こういう表現でしたらすみません)

誤)

しかしながら8個ではデータ数が少ないため、バッチノーマライゼーションの挙動が不安的になります。

正)

しかしながら8個ではデータ数が少ないため、バッチノーマライゼーションの挙動が不安定になります。

【誤植】【p.267】3行目:クラス数→チャネル数

【場所】初版:p.267の3行目、テンソルサイズは(クラス数×高さ×幅)です。
【訂正】
テンソルサイズは(クラス数×高さ×幅)です。

テンソルサイズは(チャネル数×高さ×幅)です。

チャネル数と書くところが、クラス数になっていました。
申し訳ございません。

【第1章】【1-3_transfer_learning.ipynb 書籍P30】にてAttributeErrorが発生します

1-3_transfer_learning.ipynbの30ページ、学習・検証の実行の以下の部分でAttributeErrorが発生します

# 学習・検証を実行する
num_epochs=2
train_model(net, dataloaders_dict, criterion, optimizer, num_epochs=num_epochs)

具体的なエラーは以下です

0%|          | 0/5 [00:00<?, ?it/s]Epoch 1/2
-------------
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-19-4231a11ffbf9> in <module>()
      1 num_epochs=2
----> 2 train_model(net, dataloaders_dict, criterion, optimizer, num_epochs=num_epochs)

4 frames
<ipython-input-18-43774a7b55c1> in train_model(net, dataloaders_dict, criterion, optimizer, num_epochs)
     31                 with torch.set_grad_enabled(phase == 'train'):
     32                     outputs = net(inputs)
---> 33                     loss = criterion(outputs, labels)  # 損失を計算
     34                     _, preds = torch.max(outputs, 1)  # ラベルを予測
     35 

/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
    491             result = self._slow_forward(*input, **kwargs)
    492         else:
--> 493             result = self.forward(*input, **kwargs)
    494         for hook in self._forward_hooks.values():
    495             hook_result = hook(self, input, result)

/usr/local/lib/python3.6/dist-packages/torch/nn/modules/loss.py in forward(self, input, target)
    940     def forward(self, input, target):
    941         return F.cross_entropy(input, target, weight=self.weight,
--> 942                                ignore_index=self.ignore_index, reduction=self.reduction)
    943 
    944 

/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py in cross_entropy(input, target, weight, size_average, ignore_index, reduce, reduction)
   2054     if size_average is not None or reduce is not None:
   2055         reduction = _Reduction.legacy_get_string(size_average, reduce)
-> 2056     return nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction)
   2057 
   2058 

/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py in nll_loss(input, target, weight, size_average, ignore_index, reduce, reduction)
   1865         raise ValueError('Expected 2 or more dimensions (got {})'.format(dim))
   1866 
-> 1867     if input.size(0) != target.size(0):
   1868         raise ValueError('Expected input batch_size ({}) to match target batch_size ({}).'
   1869                          .format(input.size(0), target.size(0)))

AttributeError: 'tuple' object has no attribute 'size'

inputtargetがタプルになっているのが原因だと思うのですが、どうしたら良いでしょうか?

【誤植】【1章 : p.45】図1.4.20周りの説明

Jupyter Notebookと書くべきところをAnacondaと記載しているように思われます。

P.45

【誤】図1.4.20のようにAnacondaが立ち上がります。あとは手元のPCでAnacondaを使用するのと同じ操作です。
【正】図1.4.20のようにJupyter Notebookが立ち上がります。あとは手元のPCでJupyter Notebookを使用するのと同じ操作です。

【誤】なお手元のPCからEC2サーバへファイルをアップロードしたり、逆にファイルをダウンロードしたりするのもAnacondaの「Download」や「Upload」ボタンから可能です。
【正】なお手元のPCからEC2サーバへファイルをアップロードしたり、逆にファイルをダウンロードしたりするのもJupyter Notebookの「Download」や「Upload」ボタンから可能です。

【誤】図 1.4.20 手元のPCのブラウザからAnacondaを起動
【正】図 1.4.20 手元のPCのブラウザからJupyter Notebookを起動

P.46

【誤】Anacondaを起動する方法について解説しました。
【正】Jupyter Notebookを起動する方法について解説しました。

【第3章】【3-8_PSPNet_inference.ipynb】にて推論結果の画像の色が書籍と異なるのですが、どうしたら良いですか?

対象ファイル:3-8_PSPNet_inference.ipynb

ファイルの最後にある、推論実行のセルを実行した際に、推論結果の画像が書籍と異なる結果になります。
※書籍では馬はピンク色ですが、馬が黄緑色になるなど

・どう対応したらよいでしょうか?

どうぞよろしくお願いいたします。

【第4章】【4-5_TensorBoardX.ipynb】にて実行するとエラー

#33
にて、アドバイスをいただきましたが、
PyTorchとtensorboardXのバージョンによって、4-5_TensorBoardX.ipynbで、実行エラーが出る場合があります。

torch=1.2.0
tensorboardx=1.8
でエラーが発生。

torch=1.1.0
tensorboardx=1.7
にて実行可能でした。

詳細はこちら
#33

どうぞよろしくお願い致します。

【第4章】【4-5_TensorBoardX.ipynb】にて図4.5.4などの表示が書籍と異なり、テンソルサイズが見切れているのですが、どうしたら良いですか?

対象ファイル:4-5_TensorBoardX.ipynb

4-5_TensorBoardX.ipynb
を実行し、
その後ターミナルから、

tensorboard --logdir="./tbX/"

を実行して、port6006でTensorBoardを表示し、ネットワークグラフが描画できました。

ですが、フォントサイズが異なるのか、書籍の図4.5.4などとは異なり、テンソルサイズが見切れています。

・どうしたら、テンソルサイズなどの表示が見切れないですか?

【第2章】2-7_SSD_training.ipynbでのエラーに関しまして

初めまして。
1年ほど前から、機械学習分野の勉強を始めた者です。
ただ、転移学習を行うだけでなく中身のコードを細かく理解したいと思い、
拝読させていただいております。
初歩的なミスの可能性が高く恐縮ですが、以下のエラーについてコメントいただけると幸いです。

【エラー内容】
2-7の最後の”学習・検証を実行する”という部分で、実行を行うと以下のようなエラーが出ました

-入力-
学習・検証を実行する
num_epochs= 50
train_model(net, dataloaders_dict, criterion, optimizer, num_epochs=num_epochs)

-出力(エラー)-


/content/drive/My Drive/pytorch_advanced-master/2_objectdetection/utils/ssd_model.py in pull_item(self, index)
247 image_file_path = self.img_list[index]
248 img = cv2.imread(image_file_path) # [高さ][幅][色BGR]
--> 249 height, width, channels = img.shape # 画像のサイズを取得
250
251 # 2. xml形式のアノテーション情報をリストに

AttributeError: 'NoneType' object has no attribute 'shape'


【試してみたこと】
・pathが通っていないことが原因で、正しくcv2.imreadができていないのではないかと思い
 img_listについて調べましたが、img_listは正しく作成されていました。
・2-2, 2-3章では、書籍やコードに書かれている通りの結果が出ていたため、
 比較を行い、dataloaders_dictのイタレータ変換など試してみましたが、うまくいきません
 でした。

これまで上がっている質問内容の中に、この質問がないことを考えると
おそらく個人的に何か設定等が誤っている可能性が高く、
大変恐縮ですが、お手すきの際コメントいただけると幸いです。
よろしくお願いいたします。

【第2章】【p.95】初版:書籍本文中のDBoxの数(8732 or 8735)

【場所】
初版:p.95

【内容】
本文中の説明でDBoxの数が 8,735個と記載されているのですが、正しくは8,732個ではないでしょうか。
(本書の他の箇所の説明では8,732個になっているのですが、もしこちらの勘違いでしたらすみません)

このような閾値処理をした変数scoresを引数として使用する理由は、8,735個のDBoxに対してNon-Maximum Suppressionを計算すると処理が重くなるからです。

【第9章】【9-5_ECO_inference.ipynb】にて学習済みパラメータのロード時に IncompatibleKeysと出力されますがどうしたら良いですか?

対象ファイル:9-5_ECO_inference.ipynb

def load_pretrained_ECO(model_dict, pretrained_model_dict):
のセルにおいて、

# 学習済みモデルのパラメータを代入
net.eval()  # ECOネットワークを推論モードに
net.load_state_dict(new_state_dict)

を実行すると、最後に

IncompatibleKeys(missing_keys=[], unexpected_keys=[])

と出力されます。

・この出力は何でしょうか?どう対応したらよいでしょうか?

どうぞよろしくお願いいたします。

【第3章】3-7. Xavierの初期値、Sigmoid関数はどちらに実装されてますか?

小川様。初めまして。
「PyTorchによる発展ディープラーニング」を用いて学習している者です。
お忙しいところ大変失礼致します。

3-7章で、Xavierの初期値を使用している理由として「Sigmoid関数がこの後に使われるから」との記述がありますが、本文中でSigmoid関数を実装している箇所が見つけられません。
どの部分で、Sigmoid関数が呼ばれているのでしょうか?

お忙しいところ大変恐縮ですが、ご教示いただきたいです。

7-6_Transformer.ipynb

以下のところを実行するとエラーになります。
環境は、colaboratory

動作確認

前節のDataLoaderなどを取得

from utils.dataloader import get_IMDb_DataLoaders_and_TEXT
train_dl, val_dl, test_dl, TEXT = get_IMDb_DataLoaders_and_TEXT(
max_length=256, batch_size=24)

ミニバッチの用意

batch = next(iter(train_dl))

モデル構築

net1 = Embedder(TEXT.vocab.vectors)

入出力

x = batch.Text[0]
x1 = net1(x) # 単語をベクトルに

print("入力のテンソルサイズ:", x.shape)
print("出力のテンソルサイズ:", x1.shape)


ValueError Traceback (most recent call last)

in ()
1 from utils.dataloader import get_IMDb_DataLoaders_and_TEXT
2 train_dl, val_dl, test_dl, TEXT = get_IMDb_DataLoaders_and_TEXT(
----> 3 max_length=256, batch_size=24)
4
5 # ミニバッチの用意

/content/pytorch_advanced/7_nlp_sentiment_transformer/utils/dataloader.py in get_IMDb_DataLoaders_and_TEXT(max_length, batch_size)
111 # torchtext.data.Datasetのsplit関数で訓練データとvalidationデータを分ける
112 train_ds, val_ds = train_val_ds.split(
--> 113 split_ratio=0.8, random_state=random.seed(1234))
114
115 # torchtextで単語ベクトルとして英語学習済みモデルを読み込みます

ValueError: not enough values to unpack (expected 2, got 0)

【誤植】【第2章】【p.61, 図2.1.3, p.93, p.108】初版:オフセット情報でDBoxをBBoxに変換する式

【場所】
初版:p.61, 図2.1.3, p.93, p.108

オフセット情報を用いてデフォルトボックス(DBox)をバウンディングボックス(BBox)に変換する式のcxとcyの記述が誤っていました。

申し訳ございません。


【文面訂正】
(誤り)

cx = cx_d (1 + 0.1 Δcx)
cy = cy_d (1 + 0.1 Δcy)

(訂正)

cx = cx_d + 0.1 Δcx * w_d
cy = cy_d + 0.1 Δcy * h_d


【図2.1.3訂正】
右側の図の座標情報

(誤り)

cx_d (1 + 0.1 Δcx)
cy_d (1 + 0.1 Δcy)
w・exp (0.2 Δw)
h・exp (0.2 Δh)

(訂正)

cx_d + 0.1 Δcx * w_d
cy_d + 0.1 Δcy * h_d
w_d・exp (0.2 Δw)
h_d・exp (0.2 Δh)

【第8章】【8-2-3_bert_base.ipynb.ipynbなど】にて学習済みパラメータのロード時に IncompatibleKeysと出力されますがどうしたら良いですか?

対象ファイル:8-2-3_bert_base.ipynb.ipynbなど

セル

# state_dictの名前が違うので前から順番に代入する
# 今回、パラメータの名前は違っていても、対応するものは同じ順番になっています

# 現在のネットワークの情報をコピーして新たなstate_dictを作成
new_state_dict = net.state_dict().copy()

# 新たなstate_dictに学習済みの値を代入
for index, (key_name, value) in enumerate(loaded_state_dict.items()):
    name = param_names[index]  # 現在のネットワークでのパラメータ名を取得
    new_state_dict[name] = value  # 値を入れる
    print(str(key_name)+"→"+str(name))  # 何から何に入ったかを表示

    # 現在のネットワークのパラメータを全部ロードしたら終える
    if index+1 >= len(param_names):
        break

# 新たなstate_dictを実装したBERTモデルに与える
net.load_state_dict(new_state_dict)

を実行すると、最後に

IncompatibleKeys(missing_keys=[], unexpected_keys=[])

と出力されます。

・この出力は何でしょうか?どう対応したらよいでしょうか?

どうぞよろしくお願いいたします。

【誤植】【第4章:全体において】姿勢のリンク数とPAFs:37本→19本

【場所】初版:図4.1.2の右側(リンク図)、およびその他のリンク数、PAFsの数を37と記載している場所

【訂正】
OpenPoseのリンク数は37本ではなく、19本です。
そして、19本のリンクを求めるためのPAFsについて、
x軸方向、,y軸方向で各ピクセルがリンクである確率度合いをヒートマップ化しているため、その結果38チャネルが出力されます。

リンクは図4.1.2右側(リンク図)で表記したものに加えて、「右耳-右肩」、「左耳-左肩」の2本を足して、19本となります。

こちら詳細は
以下でご指摘いただいた通りです。

【第4章】4.1 P.191 OpenPose PAFsのリンクの数は37本ではなく、19本?
#39

大変大きなミスで読者の皆様にはご迷惑をおかけいたします。
誠に申し訳ございません。

どうぞよろしくお願い致します。

【誤植】【p.48】実装コード部分、from make_dataset_・・・

【場所】初版:p.48の実装コード部分
from make_dataset_dataloader import ・・・

【訂正】

# 1.3節で作成したクラスを同じフォルダにあるmake_dataset_dataloader.pyに記載して使用
from make_dataset_dataloader import ImageTransform, make_datapath_list,
HymenopteraDataset
↓
# 1.3節で作成したクラスをフォルダutilsにあるdataloader_image_classification.pyに記載して使用
from utils.dataloader_image_classification import ImageTransform, make_datapath_list, HymenopteraDataset

が正しいimport内容となります。

GitHubのコードは正しいですが、書籍の文面が間違っています。
申し訳ございません。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.