🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

1回答

1456閲覧

VAE(変分オートエンコーダ) MNIST

Maru_Ma

総合スコア0

Python

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

0グッド

0クリップ

投稿2021/01/22 14:04

前提・実現したいこと

VAE、変分オートエンコーダのプログラムについて勉強しています。
https://nbviewer.jupyter.org/github/fchollet/deep-learning-with-python-notebooks/blob/master/8.4-generating-images-with-vaes.ipynb
上記のプログラムを実行している時に下記のようなエラーが発生しました。

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-5-b05f280ca0dc> in <module> 13 x_test = x_test.reshape(x_test.shape + (1,)) 14 ---> 15 vae.fit(x=x_train, y=None, 16 shuffle=True, 17 epochs=10, ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing) 1098 _r=1): 1099 callbacks.on_train_batch_begin(step) -> 1100 tmp_logs = self.train_function(iterator) 1101 if data_handler.should_sync: 1102 context.async_wait() ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in __call__(self, *args, **kwds) 826 tracing_count = self.experimental_get_tracing_count() 827 with trace.Trace(self._name) as tm: --> 828 result = self._call(*args, **kwds) 829 compiler = "xla" if self._experimental_compile else "nonXla" 830 new_tracing_count = self.experimental_get_tracing_count() ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds) 869 # This is the first call of __call__, so we have to initialize. 870 initializers = [] --> 871 self._initialize(args, kwds, add_initializers_to=initializers) 872 finally: 873 # At this point we know that the initialization is complete (or less ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in _initialize(self, args, kwds, add_initializers_to) 723 self._graph_deleter = FunctionDeleter(self._lifted_initializer_graph) 724 self._concrete_stateful_fn = ( --> 725 self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access 726 *args, **kwds)) 727 ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py in _get_concrete_function_internal_garbage_collected(self, *args, **kwargs) 2967 args, kwargs = None, None 2968 with self._lock: -> 2969 graph_function, _ = self._maybe_define_function(args, kwargs) 2970 return graph_function 2971 ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py in _maybe_define_function(self, args, kwargs) 3359 3360 self._function_cache.missed.add(call_context_key) -> 3361 graph_function = self._create_graph_function(args, kwargs) 3362 self._function_cache.primary[cache_key] = graph_function 3363 ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes) 3194 arg_names = base_arg_names + missing_arg_names 3195 graph_function = ConcreteFunction( -> 3196 func_graph_module.func_graph_from_py_func( 3197 self._name, 3198 self._python_function, ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py in func_graph_from_py_func(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes) 988 _, original_func = tf_decorator.unwrap(python_func) 989 --> 990 func_outputs = python_func(*func_args, **func_kwargs) 991 992 # invariant: `func_outputs` contains only Tensors, CompositeTensors, ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in wrapped_fn(*args, **kwds) 632 xla_context.Exit() 633 else: --> 634 out = weak_wrapped_fn().__wrapped__(*args, **kwds) 635 return out 636 ~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs) 975 except Exception as e: # pylint:disable=broad-except 976 if hasattr(e, "ag_error_metadata"): --> 977 raise e.ag_error_metadata.to_exception(e) 978 else: 979 raise

該当のソースコード

python

1import keras 2from keras import layers 3from keras import backend as K 4from keras.models import Model 5import numpy as np 6 7img_shape = (28, 28, 1) 8batch_size = 16 9latent_dim = 2 # Dimensionality of the latent space: a plane 10 11input_img = keras.Input(shape=img_shape) 12 13x = layers.Conv2D(32, 3, 14 padding='same', activation='relu')(input_img) 15x = layers.Conv2D(64, 3, 16 padding='same', activation='relu', 17 strides=(2, 2))(x) 18x = layers.Conv2D(64, 3, 19 padding='same', activation='relu')(x) 20x = layers.Conv2D(64, 3, 21 padding='same', activation='relu')(x) 22shape_before_flattening = K.int_shape(x) 23 24x = layers.Flatten()(x) 25x = layers.Dense(32, activation='relu')(x) 26 27z_mean = layers.Dense(latent_dim)(x) 28z_log_var = layers.Dense(latent_dim)(x) 29 30def sampling(args): 31 z_mean, z_log_var = args 32 epsilon = K.random_normal(shape=(K.shape(z_mean)[0], latent_dim), 33 mean=0., stddev=1.) 34 return z_mean + K.exp(z_log_var) * epsilon 35 36z = layers.Lambda(sampling)([z_mean, z_log_var]) 37 38# This is the input where we will feed `z`. 39decoder_input = layers.Input(K.int_shape(z)[1:]) 40 41# Upsample to the correct number of units 42x = layers.Dense(np.prod(shape_before_flattening[1:]), 43 activation='relu')(decoder_input) 44 45# Reshape into an image of the same shape as before our last `Flatten` layer 46x = layers.Reshape(shape_before_flattening[1:])(x) 47 48# We then apply then reverse operation to the initial 49# stack of convolution layers: a `Conv2DTranspose` layers 50# with corresponding parameters. 51x = layers.Conv2DTranspose(32, 3, 52 padding='same', activation='relu', 53 strides=(2, 2))(x) 54x = layers.Conv2D(1, 3, 55 padding='same', activation='sigmoid')(x) 56# We end up with a feature map of the same size as the original input. 57 58# This is our decoder model. 59decoder = Model(decoder_input, x) 60 61# We then apply it to `z` to recover the decoded `z`. 62z_decoded = decoder(z) 63 64class CustomVariationalLayer(keras.layers.Layer): 65 66 def vae_loss(self, x, z_decoded): 67 x = K.flatten(x) 68 z_decoded = K.flatten(z_decoded) 69 xent_loss = keras.metrics.binary_crossentropy(x, z_decoded) 70 kl_loss = -5e-4 * K.mean( 71 1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1) 72 return K.mean(xent_loss + kl_loss) 73 74 def call(self, inputs): 75 x = inputs[0] 76 z_decoded = inputs[1] 77 loss = self.vae_loss(x, z_decoded) 78 self.add_loss(loss, inputs=inputs) 79 # We don't use this output. 80 return x 81 82# We call our custom layer on the input and the decoded output, 83# to obtain the final model output. 84y = CustomVariationalLayer()([input_img, z_decoded]) 85 86from keras.datasets import mnist 87 88vae = Model(input_img, y) 89vae.compile(optimizer='rmsprop', loss=None) 90vae.summary() 91 92# Train the VAE on MNIST digits 93(x_train, _), (x_test, y_test) = mnist.load_data() 94 95x_train = x_train.astype('float32') / 255. 96x_train = x_train.reshape(x_train.shape + (1,)) 97x_test = x_test.astype('float32') / 255. 98x_test = x_test.reshape(x_test.shape + (1,)) 99 100vae.fit(x=x_train, y=None, 101 shuffle=True, 102 epochs=10, 103 batch_size=batch_size, 104 validation_data=(x_test, None))

https://nbviewer.jupyter.org/github/fchollet/deep-learning-with-python-notebooks/blob/master/8.4-generating-images-with-vaes.ipynb
からコピペで入力しました。

解決方法を教えて頂きたいです。よろしくお願い致します。

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

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

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

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

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

jbpb0

2021/01/22 14:14

エラーメッセージは、もっと続いてませんか?
Maru_Ma

2021/01/22 14:24

コメントありがとうございます。 下記のエラーが続いています。 TypeError: in user code: /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:805 train_function * return step_function(self, iterator) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:795 step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica return fn(*args, **kwargs) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:788 run_step ** outputs = model.train_step(data) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:755 train_step loss = self.compiled_loss( /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/compile_utils.py:237 __call__ self._loss_metric.update_state( /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/utils/metrics_utils.py:90 decorated update_op = update_state_fn(*args, **kwargs) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/metrics.py:177 update_state_fn return ag_update_state(*args, **kwargs) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/metrics.py:378 update_state ** with ops.control_dependencies([value_sum]): /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/ops.py:5359 control_dependencies return get_default_graph().control_dependencies(control_inputs) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py:359 control_dependencies self.control_captures.add(graph_element) /Users/username/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/keras_tensor.py:260 __hash__ raise TypeError('Tensors are unhashable. (%s)' TypeError: Tensors are unhashable. (KerasTensor(type_spec=TensorSpec(shape=(), dtype=tf.float32, name=None), name='tf.math.reduce_sum_9/Sum:0', description="created by layer 'tf.math.reduce_sum_9'"))Instead, use tensor.ref() as the key.
guest

回答1

0

Generating images
をgoogleコラボに入れて動かしたら、同様なエラーが出ました

上記の先頭を見たら、

python

1keras.__version__

が「'2.0.8'」と古いので、TF 1.x時代のコードだろうと思い、googleコラボで先頭に

python

1!pip install tensorflow-gpu==1.15.3 2!pip install keras==2.3.1

を追加して実行したら、エラー出ませんでした

TF 1.x環境を作って、そこで動かしてみてください

投稿2021/03/01 08:42

jbpb0

総合スコア7653

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問