![](/img/trans.png)
[英]fit() method returns ValueError when using Keras subclassing API
[英]ValueError when using vae.fit in Keras
我在 mnist 數據集上創建了一個 vae model,希望能針對歷元繪制損失 function。 但是我遇到了一些問題,無法在線找到解決方案。 在我的導入期間,我有以下導入(只是為代碼提供一些上下文):
from keras import backend as K
from keras.layers import Input, Dense, Lambda, Layer, Add, Multiply
from keras.models import Model, Sequential
from keras.datasets import mnist
我還為我自己的損失計算創建了一個名為 bn 的 function 和 class KLDivergenceLayer,它為最終的 Z20F35E630DAF44DBFA4C3F68F5399DC8 添加了 KL 發散層。
代碼:
decoder = Sequential([
Dense(intermediate_dim, input_dim=latent_dim, activation='relu'),
Dense(original_dim, activation='sigmoid')
])
x = Input(shape=(original_dim,))
h = Dense(intermediate_dim, activation='relu')(x)
z_mu = Dense(latent_dim)(h)
z_log_var = Dense(latent_dim)(h)
z_mu, z_log_var = KLDivergenceLayer()([z_mu, z_log_var])
z_sigma = Lambda(lambda t: K.exp(.5*t))(z_log_var)
eps = Input(tensor=K.random_normal(stddev=epsilon_std,
shape=(K.shape(x)[0], latent_dim)))
z_eps = Multiply()([z_sigma, eps])
z = Add()([z_mu, z_eps])
x_pred = decoder(z)
vae = Model(inputs=[x, eps], outputs=x_pred)
vae.compile(optimizer='rmsprop', loss=bn)
# train the VAE on MNIST digits
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, original_dim) / 255.
x_test = x_test.reshape(-1, original_dim) / 255.
vae.fit(x_train, x_train,
shuffle=True,
epochs=epochs,
batch_size=batch_size,
validation_data=(x_test, x_test))
我回復給我的錯誤如下:
ValueError: Layer model expects 2 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(100, 784) dtype=float32>]
問題出在你的 eps 層。 它不是 model 輸入
你可以用一個像這樣的簡單層來代替它:
eps = Lambda(lambda t: K.random_normal(stddev=1.0, shape=(K.shape(t)[0], latent_dim)))(z_log_var)
在這里你可以找到正在運行的筆記本:
https://colab.research.google.com/drive/1fLmfwCA_TOeOlXiiSabp4C4UKq73ofEN?usp=sharing
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.