Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras变分自动编码器停止工作,尽管有干净的模型摘要?_Python_Pandas_Tensorflow_Machine Learning_Keras - Fatal编程技术网

Python Keras变分自动编码器停止工作,尽管有干净的模型摘要?

Python Keras变分自动编码器停止工作,尽管有干净的模型摘要?,python,pandas,tensorflow,machine-learning,keras,Python,Pandas,Tensorflow,Machine Learning,Keras,我已经使用下面的可变自动编码器有一段时间了,但在最近的环境重置后,它刚刚停止工作。我已经搜索了tensorflow的文档和最近的更改日志(但我似乎找不到一个月前发布的良好历史记录),但在这些函数的基本定义中没有发现任何更改。此外,我得到的是非常枯燥的错误代码,这不是很有描述性或帮助 AssertionError: in user code: AssertionError: Could not compute output Tensor("sequential/dense_1/Sigm

我已经使用下面的可变自动编码器有一段时间了,但在最近的环境重置后,它刚刚停止工作。我已经搜索了tensorflow的文档和最近的更改日志(但我似乎找不到一个月前发布的良好历史记录),但在这些函数的基本定义中没有发现任何更改。此外,我得到的是非常枯燥的错误代码,这不是很有描述性或帮助

AssertionError: in user code:

AssertionError: Could not compute output Tensor("sequential/dense_1/Sigmoid:0", shape=(None, 110), dtype=float32)
错误似乎只是指向最后一行,因为它实际上无法更具描述性。然而,当查看模型摘要时,模型似乎识别了所有层和相关的构建

vae.summary()
Model: "functional_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            [(None, 110)]        0                                            
__________________________________________________________________________________________________
dense_2 (Dense)                 (None, 64)           7104        input_1[0][0]                    
__________________________________________________________________________________________________
dense_3 (Dense)                 (None, 2)            130         dense_2[0][0]                    
__________________________________________________________________________________________________
dense_4 (Dense)                 (None, 2)            130         dense_2[0][0]                    
__________________________________________________________________________________________________
kl_divergence_layer (KLDivergen [(None, 2), (None, 2 0           dense_3[0][0]                    
                                                                 dense_4[0][0]                    
__________________________________________________________________________________________________
lambda (Lambda)                 (None, 2)            0           kl_divergence_layer[0][1]        
__________________________________________________________________________________________________
input_2 (InputLayer)            [(None, 2)]          0                                            
__________________________________________________________________________________________________
multiply (Multiply)             (None, 2)            0           lambda[0][0]                     
                                                                 input_2[0][0]                    
__________________________________________________________________________________________________
add (Add)                       (None, 2)            0           kl_divergence_layer[0][0]        
                                                                 multiply[0][0]                   
__________________________________________________________________________________________________
sequential (Sequential)         (None, 110)          7342        add[0][0]                        
==================================================================================================
Total params: 14,706
Trainable params: 14,706
Non-trainable params: 0
__________________________________________________________________________________________________
结果,我不知道出了什么问题。有什么想法吗?下面是Vae的样本数据

import pandas as pd
from sklearn.datasets import make_blobs 
from sklearn.preprocessing import MinMaxScaler

import keras.backend as K
import tensorflow as tf

from keras.layers import Input, Dense, Lambda, Layer, Add, Multiply
from keras.models import Model, Sequential
from keras.callbacks import EarlyStopping, LearningRateScheduler
from keras.objectives import binary_crossentropy


x, labels = make_blobs(n_samples=150000, n_features=110,  centers=16, cluster_std=4.0)
scaler = MinMaxScaler()
x = scaler.fit_transform(x)
x = pd.DataFrame(x)

train = x.sample(frac = 0.8)
train_indexs = train.index.values
test = x[~x.index.isin(train_indexs)]
print(train.shape, test.shape)

def nll(y_true, y_pred):
    """ Negative log likelihood (Bernoulli). """
    return K.sum(K.binary_crossentropy(y_true, y_pred), axis = -1)

class KLDivergenceLayer(Layer):
    """ Identity transform layer that adds KL divergence
    to the final model loss.
    """
    def __init__(self, *args, **kwargs):
        self.is_placeholder = True
        super(KLDivergenceLayer, self).__init__(*args, **kwargs)

    def call(self, inputs):

        mu, log_var = inputs
                            #changing form sum to mean
        kl_batch = - .5 * K.sum(1 + log_var -
                                K.square(mu) -
                                K.exp(log_var), axis=-1)

        self.add_loss(K.mean(kl_batch), inputs=inputs)

        return inputs

#################### VAE ##############


latent_dim = 2

decoder = Sequential([
    Dense(64, input_dim=latent_dim, activation='relu'),
    Dense(x.shape[1], activation='sigmoid')
])

data = Input(shape=(x.shape[1],))
h = Dense(64, activation='relu')(data)

z_mu = Dense(latent_dim)(h)
z_log_var = Dense(latent_dim)(h)

#applies KLDivergence here?
z_mu, z_log_var = KLDivergenceLayer()([z_mu, z_log_var])

#generates random samples
z_sigma = Lambda(lambda t: K.exp(.5*t))(z_log_var)
eps = Input(tensor=K.random_normal(stddev=1.0,
                                   shape=(K.shape(data)[0], latent_dim)))
z_eps = Multiply()([z_sigma, eps])
z = Add()([z_mu, z_eps])

#apply decoder
x_pred = decoder(z)

# defines final model
vae = Model(inputs=[data, eps], outputs=x_pred)
vae.compile(optimizer='rmsprop', loss=nll)

#runs model
vae.fit(train, train, shuffle = True, epochs = 1000, 
        batch_size = 512, validation_data = (test, test), 
        callbacks = [EarlyStopping(patience=50)])

问题在于你的eps层。这不是一个模型输入

您可以将其替换为以下简单图层:

eps = Lambda(lambda t: K.random_normal(stddev=1.0, shape=(K.shape(t)[0], latent_dim)))(z_log_var)
你可以在这里找到跑步笔记本: