0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【備忘録】Pythonのインスタンス(オブジェクト?)の中身を確認したいとき

Posted at

はじめに

機械学習のコードをいじっているとき,
出てきたバイナリファイルの中身を確認したいときがありますよね?
そんなとき用に備忘録として確認の仕方を残しておきます.

結論

Open-NMTでpreprocessを行った際に,-save_data引数に指定したファイルに保存されたバイナリ化したデータを対象に説明していきます.

pythonのインタラクティブモードでデータをloadすると以下のようになっていると思います.
(ここではtraining-data-en-de.vocab.ptが対象データ)

>>> import torch
>>> data = torch.load('training-data-en-de.vocab.pt')
>>> data
{'src': <onmt.inputters.text_dataset.TextMultiField object at 0x7f14bde081c0>, 'tgt': <onmt.inputters.text_dataset.TextMultiField object at 0x7f140916cee0>, 'indices': <torchtext.data.field.Field object at 0x7f140916cfd0>}

このとき,dataはdict型ですが,それぞれの中身がオブジェクトとなっています.
このオブジェクトの中身を確認したい場合,組み込み関数のvars()dir()を用います.

2つの組み込み関数を比較した結果が以下になります.

>>> vars(data['src'])
{'preprocessing': None, 'postprocessing': None, 'is_target': False, 'fields': [('src', <torchtext.data.field.Field object at 0x7f14bde083d0>)]}
>>> dir(data['src'])
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'base_field', 'fields', 'is_target', 'postprocessing', 'preprocess', 'preprocessing', 'process']

ざっくり見てみると,
vars()はそれぞれの変数に何が格納されているのかdict型で返しているのに対して,
dir()は変数やクラスなどの名前をlist型で返してくれます.

参考文献

https://qiita.com/wakoit/items/659dd0fdbb16b214454f
https://docs.python.org/ja/3/library/functions.html

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?