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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

Q&A

解決済

2回答

4966閲覧

FailedPreconditionErrorのエラー対処方法

kouji_39

総合スコア164

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

0グッド

0クリップ

投稿2021/05/29 22:43

編集2021/05/30 01:01

1.質問内容
実践GAN 敵対性生成ネットワークによる深層学習(マイナビ)で、VAEの実装を勉強中です。
参考コードも
実践GAN 敵対性生成ネットワークによる深層学習の公開github中コードです。
githubは、以下です。
https://github.com/GANs-in-Action/gans-in-action
Chapter-2の「Chapter_2_Autoencoder.ipynb」が参考コードです。

参考コードは、vAE実装例です。google colab上で作動させると、以下の
エラーが、下記の場所で出ます。

python

1vae.fit(x_train, x_train, 2 shuffle=True, 3 epochs=epochs, 4 batch_size=batch_size)

エラー文は、以下のもの
FailedPreconditionError: Could not find variable training_2/RMSprop/rho. This could mean that the variable has been deleted. In TF1, it can also mean the variable is uninitialized. Debug info: container=localhost, status=Not found: Resource localhost/training_2/RMSprop/rho/N10tensorflow3VarE does not exist.

対処方法をお願いいたします。

2.参考コード

python

1from __future__ import print_function 2 3import numpy as np 4import matplotlib.pyplot as plt 5from scipy.stats import norm 6import tensorflow as tf 7 8from keras.layers import Input, Dense, Lambda, Reshape 9from keras.models import Model 10from keras import backend as K 11from keras import objectives#追加 12from keras import metrics 13from keras.datasets import mnist 14 15# defining the key parameters 16batch_size = 100 17original_dim = 784 18latent_dim = 2 19intermediate_dim = 256 20epochs = 50 21epsilon_std = 1.0 22 23def sampling(args: tuple): 24 # we grab the variables from the tuple 25 z_mean, z_log_var = args 26 epsilon = K.random_normal(shape=(K.shape(z_mean)[0], latent_dim), mean=0., 27 stddev=epsilon_std) 28 return z_mean + K.exp(z_log_var / 2) * epsilon 29 30# input to our encoder 31x = Input(shape=(original_dim,), name="input") 32# intermediate layer 33h = Dense(intermediate_dim, activation='relu', name="encoding")(x) 34# defining the mean of the latent space 35z_mean = Dense(latent_dim, name="mean")(h) 36# defining the log variance of the latent space 37z_log_var = Dense(latent_dim, name="log-variance")(h) 38# note that "output_shape" isn't necessary with the TensorFlow backend 39z = Lambda(sampling, output_shape=(latent_dim,))([z_mean, z_log_var]) 40# defining the encoder as a keras model 41encoder = Model(x, [z_mean, z_log_var, z], name="encoder") 42# print out summary of what we just did 43encoder.summary() 44 45# Input to the decoder 46input_decoder = Input(shape=(latent_dim,), name="decoder_input") 47# taking the latent space to intermediate dimension 48decoder_h = Dense(intermediate_dim, activation='relu', name="decoder_h")(input_decoder) 49# getting the mean from the original dimension 50x_decoded = Dense(original_dim, activation='sigmoid', name="flat_decoded")(decoder_h) 51# defining the decoder as a keras model 52decoder = Model(input_decoder, x_decoded, name="decoder") 53decoder.summary() 54 55# grab the output. Recall, that we need to grab the 3rd element our sampling z 56output_combined = decoder(encoder(x)[2]) 57# link the input and the overall output 58vae = Model(x, output_combined) 59# print out what the overall model looks like 60vae.summary() 61 62Model?? 63 64def vae_loss(x: tf.Tensor, x_decoded_mean: tf.Tensor, 65 z_log_var=z_log_var, z_mean=z_mean, 66 original_dim=original_dim): 67 xent_loss = original_dim * metrics.binary_crossentropy(x, x_decoded_mean) 68 kl_loss = - 0.5 * K.sum( 69 1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1) 70 vae_loss = K.mean(xent_loss + kl_loss) 71 return vae_loss 72 73vae.compile(optimizer='rmsprop', loss=vae_loss) 74vae.summary() 75 76(x_train, y_train), (x_test, y_test) = mnist.load_data() 77 78x_train = x_train.astype('float32') / 255. 79x_test = x_test.astype('float32') / 255. 80x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:]))) 81x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:]))) 82 83vae.fit(x_train, x_train, 84 shuffle=True, 85 epochs=epochs, 86 batch_size=batch_size) 87 88# display a 2D plot of the digit classes in the latent space 89x_test_encoded = encoder.predict(x_test, batch_size=batch_size)[0] 90plt.figure(figsize=(6, 6)) 91plt.scatter(x_test_encoded[:,0], x_test_encoded[:,1], c=y_test, cmap='viridis') 92plt.colorbar() 93plt.show() 94 95# display a 2D manifold of the digits 96n = 15 # figure with 15x15 digits 97digit_size = 28 98figure = np.zeros((digit_size * n, digit_size * n)) 99grid_x = norm.ppf(np.linspace(0.05, 0.95, n)) 100grid_y = norm.ppf(np.linspace(0.05, 0.95, n)) 101 102for i, yi in enumerate(grid_x): 103 for j, xi in enumerate(grid_y): 104 z_sample = np.array([[xi, yi]]) 105 x_decoded = decoder.predict(z_sample) 106 digit = x_decoded[0].reshape(digit_size, digit_size) 107 figure[i * digit_size: (i + 1) * digit_size, 108 j * digit_size: (j + 1) * digit_size] = digit 109 110plt.figure(figsize=(10, 10)) 111plt.imshow(figure, cmap='Greys_r') 112plt.show()

3.補足情報(FW/ツールのバージョンなど)
開発環境:Google Colaboratory
プログラム言語:python3
OS:windows10 Home
CPU:Intel(R) Core(TM) i7-7500U CPU@2.70GHz 2.90GHz

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

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

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

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

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

jbpb0

2021/05/30 01:05 編集

> 参考コードも 実践GAN 敵対性生成ネットワークによる深層学習の公開github中コードです。 「実践GAN」のサポートWebページ https://book.mynavi.jp/supportsite/detail/9784839967710.html によると、githubは下記です https://github.com/GANs-in-Action/gans-in-action > githubは、以下です。 https://github.com/yusugomori/deeplearning-keras-tf2-torch Chapter-2の「Chapter_2_Autoencoder.ipynb」が参考コードです。 にあるのは、「詳解ディープラーニング 第2版」 https://book.mynavi.jp/ec/products/detail/id=109454 のコード
kouji_39

2021/05/30 02:55

ご指導ありがとうございます。 バージョン指定インストールは、以下のようなかんじでしょうか? !pip install keras==2.2.4 !pip install tensorflow==1.12.0 上記を参考コードの一番前に持ってきて、実行すると、 from keras.layers import Input, Dense, Lambda, Reshape の箇所で、以下のエラーが発生します。 AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'
jbpb0

2021/05/30 03:08

!pip list で、バージョン合ってるか確認してください
jbpb0

2021/05/30 03:16

別のバージョンをインストールしたら、たしか再起動しないと反映されなかったような !pip install... の時にそれ的なことが書かれてると思うので、確認してください
kouji_39

2021/05/30 03:28

再度のご指導ありがとうございます。 tensorflowは、2.5.0 になっていました。インポート時にtensorflowについては、下記のエラー が発生していました。一応、動きはします。なお、kerasは2.2.4のバージョンでした。 ERROR: Could not find a version that satisfies the requirement tensorflow==1.12.0 (from versions: 1.13.0rc1, 1.13.0rc2, 1.13.1, 1.13.2, 1.14.0rc0, 1.14.0rc1, 1.14.0, 1.15.0rc0, 1.15.0rc1, 1.15.0rc2, 1.15.0rc3, 1.15.0, 1.15.2, 1.15.3, 1.15.4, 1.15.5, 2.0.0a0, 2.0.0b0, 2.0.0b1, 2.0.0rc0, 2.0.0rc1, 2.0.0rc2, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.1.0rc0, 2.1.0rc1, 2.1.0rc2, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.2.0rc0, 2.2.0rc1, 2.2.0rc2, 2.2.0rc3, 2.2.0rc4, 2.2.0, 2.2.1, 2.2.2, 2.3.0rc0, 2.3.0rc1, 2.3.0rc2, 2.3.0, 2.3.1, 2.3.2, 2.4.0rc0, 2.4.0rc1, 2.4.0rc2, 2.4.0rc3, 2.4.0rc4, 2.4.0, 2.4.1, 2.5.0rc0, 2.5.0rc1, 2.5.0rc2, 2.5.0rc3, 2.5.0) ERROR: No matching distribution found for tensorflow==1.12.0 (テンソルフローに一致するdistributionが見つかりません)
jbpb0

2021/05/30 04:32 編集

それでしたら、TF1.*の中からインストール可能なバージョンを選んで入れてから、再起動してから実行してみてください TF1とTF2は、かなり仕様が違うので、TF1用のコードは、たいていTF2ではすんなりとは動きません
jbpb0

2021/05/30 04:29

バージョンに「rc」が付いてるのは、正式リリース版ではないので、避けた方がいいかも
jbpb0

2021/05/30 22:39 編集

Colabで動かして確認したら、TFとKerasをバージョン指定して入れ直しても、現状Colabに入ってる「keras-nightly」が邪魔してエラーが消えないので、それを削除する必要がありました 詳細手順を回答に書いたので、確認してみてください
guest

回答2

0

ベストアンサー

GANs in Action
の「List of available code:」の「Chapter 2:」の「Colab」をクリックして、現れたColabのノートブックの先頭に

python

1!pip uninstall -y tensorflow 2!pip uninstall -y keras-nightly 3!pip uninstall -y keras 4!pip install tensorflow==1.15.3 5!pip install keras==2.3.1

という内容のセルを追加し、そのセルだけを実行して、Colabのランタイムを再起動して、「すべてのセルを実行」をしたら、エラーは出ずに最後まで実行できました

投稿2021/05/30 13:54

jbpb0

総合スコア7653

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

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

jbpb0

2021/05/31 00:08

Colabのノートブックに上記を行う前に、内容を全く触らずにそのまま「すべてのセルを実行」をしたら、 vae.fit(x_train, x_train, shuffle=True, epochs=epochs, batch_size=batch_size) のところでエラーが出ましたが、エラーメッセージは質問に書かれてるものとは違い、下記でした 「TypeError: Cannot convert a symbolic Keras input/output to a numpy array. (略)」
kouji_39

2021/05/31 00:17

jbpb0さん、ありがとうございます。 jbpb0さんのセルを頭にいれて、ランタイム再起動、次のセルから「以降のセルを実行」でうまくいきました。あと、他のファイルを実行時は、「出荷時にリセット」をする。ということですね。
jbpb0

2021/05/31 01:32 編集

> 他のファイルを実行時は、「出荷時にリセット」をする。ということですね そうですね いろいろ試行錯誤して、いろんなものを入れたり削除したりを繰り返すと、現状がどうなってるのか把握できなくなり、たまたまうまくいく状態になったとしても、それを一からやり直して再現する方法がわからなくなったりします なので、何かやってみてダメで、他の方法を試す際は、「ランタイムを出荷時設定にリセット」をしてからやるようにしてます そうすれば、リセット後にやったことだけをちゃんとやれば、状態を再現できますので
kouji_39

2021/05/31 03:24

今日は、次章のGANのコードを動かしてみたら、バージョン変更は不要でした。VAEのコードについては、テキスト中でもバージョン指定に触れていたので、第2章VAEだけバージョン変更が必要だったのもしれません。「!pip uninstall -y keras-nightly」については、なかなか気づけないところなので、jbpb0さんのご指導に感謝しております。
guest

0

google翻訳
FailedPreconditionError: 変数training_2/RMSprop/rhoが見つかりませんでした。これは、変数が削除されたことを意味する可能性があります。 TF1 では、変数が初期化されていないことも意味します。デバッグ情報: コンテナー=ローカルホスト、ステータス=見つかりません: リソース localhost/training_2/RMSprop/rho/N10tensorflow3VarE が存在しません。

投稿2021/05/29 22:50

y_waiwai

総合スコア88042

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

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

kouji_39

2021/05/29 22:58

「リソース localhost/training_2/RMSprop/rho/N10tensorflow3VarE が存在しません。」等、何を意味し、どう対応するのかがわからないので、ご教授いただけたら幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問