前提・実現したいこと
直感DeepLearning という本のサンプルコード実行の際に出たエラーの解消をしたいです.
エラーの理由も知りたいです.
Python 3.7.3
Keras 2.2.4
で実行しました.
発生している問題・エラーメッセージ
Traceback (most recent call last): File "c:/Users/dyqh2112/AppData/Local/Programs/Python/Python37/WORK/deep-learning-with-keras-ja-master/ch04/example_gan_convolutional.py", line 109, in <module> player_names=["generator", "discriminator"]) File "C:\Users\dyqh2112\Anaconda3\envs\Test1\lib\site-packages\keras_adversarial\adversarial_model.py", line 47, in __init__ self.layers = [] File "C:\Users\dyqh2112\Anaconda3\envs\Test1\lib\site-packages\keras\engine\network.py", line 316, in __setattr__ super(Network, self).__setattr__(name, value) AttributeError: can't set attribute
dyqh2112 はユーザー名です
該当のソースコード
https://github.com/oreilly-japan/deep-learning-with-keras-ja/tree/master/ch04
の
example_gan_convolutional.py
のコードです.
python3
1import os 2import pandas as pd 3import numpy as np 4import matplotlib as mpl 5import keras.backend as K 6from keras.layers import Flatten, Dropout, LeakyReLU, Input, Activation, Dense, BatchNormalization 7from keras.layers.convolutional import UpSampling2D, Conv2D 8from keras.models import Model 9from keras.optimizers import Adam 10from keras.callbacks import TensorBoard 11from keras.datasets import mnist 12from keras_adversarial.image_grid_callback import ImageGridCallback 13from keras_adversarial import AdversarialModel, simple_gan, gan_targets 14from keras_adversarial import AdversarialOptimizerSimultaneous, normal_latent_sampling 15from image_utils import dim_ordering_fix, dim_ordering_input, dim_ordering_reshape, dim_ordering_unfix 16 17 18# This line allows mpl to run with no DISPLAY defined 19mpl.use("Agg") 20 21 22def model_generator(): 23 nch = 256 24 g_input = Input(shape=[100]) 25 H = Dense(nch * 14 * 14)(g_input) 26 H = BatchNormalization()(H) 27 H = Activation("relu")(H) 28 H = dim_ordering_reshape(nch, 14)(H) 29 H = UpSampling2D(size=(2, 2))(H) 30 H = Conv2D(int(nch / 2), (3, 3), padding="same")(H) 31 H = BatchNormalization()(H) 32 H = Activation("relu")(H) 33 H = Conv2D(int(nch / 4), (3, 3), padding="same")(H) 34 H = BatchNormalization()(H) 35 H = Activation("relu")(H) 36 H = Conv2D(1, (1, 1), padding="same")(H) 37 g_V = Activation("sigmoid")(H) 38 return Model(g_input, g_V) 39 40 41def model_discriminator(input_shape=(1, 28, 28), dropout_rate=0.5): 42 d_input = dim_ordering_input(input_shape, name="input_x") 43 nch = 512 44 # nch = 128 45 H = Conv2D(int(nch / 2), (5, 5), 46 strides=(2, 2), 47 padding="same", 48 activation="relu", 49 )(d_input) 50 H = LeakyReLU(0.2)(H) 51 H = Dropout(dropout_rate)(H) 52 H = Conv2D(nch, (5, 5), 53 strides=(2, 2), 54 padding="same", 55 activation="relu", 56 )(H) 57 H = LeakyReLU(0.2)(H) 58 H = Dropout(dropout_rate)(H) 59 H = Flatten()(H) 60 H = Dense(int(nch / 2))(H) 61 H = LeakyReLU(0.2)(H) 62 H = Dropout(dropout_rate)(H) 63 d_V = Dense(1, activation="sigmoid")(H) 64 return Model(d_input, d_V) 65 66 67def mnist_process(x): 68 x = x.astype(np.float32) / 255.0 69 return x 70 71 72def mnist_data(): 73 (xtrain, ytrain), (xtest, ytest) = mnist.load_data() 74 return mnist_process(xtrain), mnist_process(xtest) 75 76 77def generator_sampler(latent_dim, generator): 78 def fun(): 79 zsamples = np.random.normal(size=(10 * 10, latent_dim)) 80 gen = dim_ordering_unfix(generator.predict(zsamples)) 81 return gen.reshape((10, 10, 28, 28)) 82 83 return fun 84 85 86if __name__ == "__main__": 87 # z \in R^100 88 latent_dim = 100 89 # x \in R^{28x28} 90 input_shape = (1, 28, 28) 91 92 # generator (z -> x) 93 generator = model_generator() 94 # discriminator (x -> y) 95 discriminator = model_discriminator(input_shape=input_shape) 96 # gan (x - > yfake, yreal), z generated on GPU 97 gan = simple_gan(generator, discriminator, 98 normal_latent_sampling((latent_dim,))) 99 100 # print summary of models 101 generator.summary() 102 discriminator.summary() 103 gan.summary() 104 105 # build adversarial model 106 model = AdversarialModel(base_model=gan, 107 player_params=[generator.trainable_weights, 108 discriminator.trainable_weights], 109 player_names=["generator", "discriminator"]) 110 model.adversarial_compile(adversarial_optimizer=AdversarialOptimizerSimultaneous(), 111 player_optimizers=[Adam(1e-4, decay=1e-4), 112 Adam(1e-3, decay=1e-4)], 113 loss="binary_crossentropy") 114 115 # train model 116 generator_cb = ImageGridCallback("output/gan_convolutional/epoch-{:03d}.png", 117 generator_sampler(latent_dim, generator)) 118 callbacks = [generator_cb] 119 if K.backend() == "tensorflow": 120 callbacks.append( 121 TensorBoard(log_dir=os.path.join("output/gan_convolutional/", "logs/"), 122 histogram_freq=0, write_graph=True, write_images=True)) 123 124 xtrain, xtest = mnist_data() 125 xtrain = dim_ordering_fix(xtrain.reshape((-1, 1, 28, 28))) 126 xtest = dim_ordering_fix(xtest.reshape((-1, 1, 28, 28))) 127 y = gan_targets(xtrain.shape[0]) 128 ytest = gan_targets(xtest.shape[0]) 129 history = model.fit(x=xtrain, y=y, validation_data=(xtest, ytest), 130 callbacks=[generator_cb], epochs=100, 131 batch_size=32) 132 df = pd.DataFrame(history.history) 133 df.to_csv("output/gan_convolutional/history.csv") 134 135 generator.save("output/gan_convolutional/generator.h5") 136 discriminator.save("output/gan_convolutional/discriminator.h5") 137
試したこと
can't set attributeでネットで調べてみましたが,よくわかりませんでした.
回答1件
あなたの回答
tips
プレビュー