Вариационная модель встраивания, приводящая к TypeError в Keras 2.2.4 / Theano 1.0.4 - PullRequest
0 голосов
/ 03 июня 2019

Пытаясь реализовать Variational Deep Embedding (VaDE) для моих собственных наборов данных, я пытался адаптировать код на основе этой статьи, которую можно найти здесь в файл VaDE.py. Код, который у меня есть, на данный момент практически идентичен коду в этом файле, за исключением того, что я использую свои данные вместо их данных. Тем не менее я получаю следующую ошибку при вызове vade.fit() в последней строке файла:

TypeError: Cannot convert Type TensorType(float32, vector) (of Variable Elemwise{add,no_inplace}.0) into Type TensorType(float32, scalar). You can try to manually convert Elemwise{add,no_inplace}.0 into a TensorType(float32, scalar).

Я попытался перейти на использование одного из наборов данных, которые они используют, а именно MNIST, чтобы проверить, сохранилась ли ошибка. Это так, что заставляет меня поверить, что проблема заключается в том, что они используют Keras 1.1.0, а я - Keras 2.2.4 (и Theano 1.0.4), однако я не уверен в этом. Я относительно уверен, что ошибка заключается в функции gmmpara_init(), а точнее в переменной lambda_p, как если бы я закомментировал соответствующие части кода, модель не обнаружила никаких ошибок и обучается нормально. Эта функция выглядит следующим образом (идентично приведенной выше):

def gmmpara_init():

    theta_init=np.ones(n_centroid)/n_centroid
    u_init=np.zeros((latent_dim,n_centroid))
    lambda_init=np.ones((latent_dim,n_centroid))
    theta_p=theano.shared(np.asarray(theta_init,dtype=theano.config.floatX),name="pi")
    u_p=theano.shared(np.asarray(u_init,dtype=theano.config.floatX),name="u")
    lambda_p=theano.shared(np.asarray(lambda_init,dtype=theano.config.floatX),name="lambda")
    return theta_p,u_p,lambda_p

Я застрял на этом больше времени, чем хотел бы признать, поэтому я подумал, что я спрошу ТАК, есть ли у кого-нибудь идеи относительно того, как решить эту проблему. При необходимости можно предоставить больше деталей, однако, как я уже сказал, я просто пытаюсь заставить их код работать с последней версией Keras / Theano. Я знаю, что простым решением было бы вернуться к старым версиям, но я хотел бы избежать этого, если это возможно, потому что я планирую широко модифицировать их программу и интегрировать ее с другим имеющимся у меня кодом, использующим последние версии Keras / Theano.

...