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

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

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

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

Q&A

解決済

1回答

840閲覧

画像生成モデル内のリストの中身について理解したい

mayumi8

総合スコア11

Python 3.x

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

0グッド

0クリップ

投稿2019/06/26 09:33

kerasでGANの一種であるpix2pixのモデルを実装しようと試みている初学者です。

あるサイトに掲載されているサンプルコードを参考にしています。

その中の、generator_unet_upsampling という関数を定義する部分に、

python

1first_conv = Conv2D(list_filters_num[0], (3,3), strides=(2,2), name='unet_conv2D_1', padding='same')(unet_input) 2 3list encoder = [first_conv]

という記載があり、その下には、

Python

1conv = conv_block_unet(list_encoder[-1], f, name, axis_num)

との記載があります。

しかし、この[first_conv]の中身がわからず、
list_encoder[-1]が何を示しているのか理解できていない現状です。

おそらく、各層における入力画像のことだと何となく考えていますが、
その点についてご教授いただけましたら大変助かります。

よろしくお願いいたします。

該当のソースコード

Python

1# 入力画像サイズ(256,256,3) 2 3def conv_block_unet(x, f, name, bn_axis, bn=True, strides=(2,2)):  4 x = LeakyReLU(0.2)(x) 5 x = Conv2D(f, (3,3), strides=strides, name=name, padding='same')(x) 6 if bn: x = BatchNormalization(axis=bn_axis)(x) 7 return x 8 9def generator_unet_upsampling(img_shape, disc_img_shape, model_name="generator_unet_upsampling"): 10 filters_num = 64 11 axis_num = -1 12 channels_num = img_shape[-1] 13 min_s = min(img_shape[:-1]) 14 15 unet_input = Input(shape=img_shape, name="unet_input") 16 17 conv_num = int(np.floor(np.log(min_s)/np.log(2))) 18 list_filters_num = [filters_num*min(8, (2**i)) for i in range(conv_num)] 19 20 # Encoder 21 first_conv = Conv2D(list_filters_num[0], (3,3), strides=(2,2), name='unet_conv2D_1', padding='same')(unet_input) 22 list_encoder = [first_conv] 23 for i, f in enumerate(list_filters_num[1:]): 24 name = 'unet_conv2D_' + str(i+2) 25 conv = conv_block_unet(list_encoder[-1], f, name, axis_num)   26 list_encoder.append(conv) 27

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

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

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

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

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

guest

回答1

0

ベストアンサー

list_encoder[-1]が何を示しているのか理解できていない現状です。

作成した層をリストで保持しているようです。

最初に list_encoder = [first_conv] としてリストを初期化したあと、その末尾にどんどん層を追加していっています。
最終的には、list_encoder = [第1層, 第2層, ..., 第n層] というリストが出来上がります。
リストの各要素は Conv2D や LeakyReLU などになります。

投稿2019/06/26 09:40

tiitoi

総合スコア21956

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

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

mayumi8

2019/06/26 11:47

早速のご回答ありがとうございます。 リストを初期化して、そこから、.append(conv)で層を順にリストの中に追加していくということですね。大変勉強になりました。ありがとうございます。 よろしければ今後ともご指導の程よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問