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

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

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

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

Q&A

解決済

1回答

1306閲覧

passだけしか返さないclassを定義する意味

trafalbad

総合スコア303

Python

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

0グッド

1クリップ

投稿2017/08/27 05:06

編集2017/08/30 07:13

以下のように関数の中でclassを定義していますが、pass何も返しません。
一方関数のreturnはresultになっています。

ここで質問があるのですが、
質問1:このclassを定義する意味はなんなのでしょうか?
質問2: このコードはcifar10のものですが、result = CIFAR10Record()の部分の意味を教えてください。

def read_cifar10(filename_queue): class CIFAR10Record(object): pass result = CIFAR10Record() label_bytes = 1 # 2 for CIFAR-100 result.height = 128 result.width = 128 result.depth = 3 image_bytes = result.height * result.width * result.depth # 49152 record_bytes = label_bytes + image_bytes reader = tf.FixedLengthRecordReader(record_bytes=record_bytes) # #<tensorflow.python.ops.io_ops.FixedLengthRecordReader at 0x112c44128> result.key, value = reader.read(filename_queue) # # key:<tf.Tensor 'ReaderReadV2:0' shape=() dtype=string> vaule:ReaderReadV2:1' record_bytes = tf.decode_raw(value, tf.uint8) # <tf.Tensor 'DecodeRaw:0' shape=(?,) dtype=uint8> result.label = tf.cast(tf.strided_slice(record_bytes, [0], [label_bytes]), tf.int32) # # <tf.Tensor 'Cast:0' shape=(?,) dtype=int32> depth_major = tf.reshape(tf.strided_slice(record_bytes, [label_bytes], [label_bytes + image_bytes]),[result.depth, result.height, result.width]) # # <tf.Tensor 'Reshape:0' shape=(3, 128, 128) dtype=uint8> result.uint8image = tf.transpose(depth_major, [1, 2, 0]) # <tf.Tensor 'transpose_1:0' shape=(128, 128, 3) dtype=uint8> return result

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

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

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

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

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

guest

回答1

0

ベストアンサー

単に構造体のような使い方をしているように見えます。
以下のコードと機能的には同じですよね?(動作確認はしていませんが)

Python

1def read_cifar10(filename_queue): 2 label_bytes = 1 3 height = 128 4 width = 128 5 depth = 3 6 image_bytes = height * width * depth # 49152 7 8 record_bytes = label_bytes + image_bytes 9 reader = tf.FixedLengthRecordReader(record_bytes=record_bytes) 10 key, value = reader.read(filename_queue) 11 12 record_bytes = tf.decode_raw(value, tf.uint8) 13 label = tf.cast(tf.strided_slice(record_bytes, [0], [label_bytes]), tf.int32) 14 15 depth_major = tf.reshape(tf.strided_slice(record_bytes, [label_bytes], [label_bytes + image_bytes]),[depth, height, width]) 16 uint8image = tf.transpose(depth_major, [1, 2, 0]) 17 18 return height, width, depth, key, label, uint8image

ただ、このコードは返り値が煩雑すぎて見通しが悪いです。
こいつを回避するために、空のクラスとそのインスタンス/インスタンス変数を利用しているのでは。

推測ですので、本当はどういう意図であったか、それはコーダにしかわかりません。
ともすれば、一時的に空のクラスにしていただけという可能性もありますし。


result = CIFAR10Record()の意味

インスタンスを生成しているだけです。

投稿2017/08/30 08:18

編集2017/08/30 08:20
LouiS0616

総合スコア35660

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

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

trafalbad

2017/08/30 09:52

わかりやすい回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問