В основном я пишу автоэнкодер, в котором функция декодера имеет некоторые дополнительные шаги и должна преобразовать тензоры в numpy, применить некоторые функции к массиву numpy и, наконец, преобразовать массив numpy обратно в тензор .
latent_dim=256
def encoder(train):
conv1 = Conv2D(32, (3, 3),strides=2, activation='relu', padding='same', name='myconv1')(train)
conv2 = Conv2D(64, (3, 3), activation='relu', padding='same')(conv1)
x = Flatten()(conv2)
latent = Dense(latent_dim, name='latent_vector')(x)
return latent
def decoder( latent):
x = Dense(256)(latent)
latent = Reshape((16, 16, 1))(x)
conv3 = Conv2DTranspose(64, (3, 3),strides=2, activation='relu', padding='same')(latent)
decoded = Conv2DTranspose(32, (3, 3),strides=2, activation='sigmoid', padding='same')(conv3)
decoded = Conv2DTranspose(1, (3,3), padding='same')(decoded)
decoded = Activation('tanh', name='decoder_output')(decoded)
final_output= extrafunction(decoded, myid, sn, header, sess)
return final_output
def extrafunction( decoded, sess):
with sess.as_default():
sess.run(var)
# convert to numpy
decoded=decoded.eval()
# In this section, I run some external function with the decoded variable as the input to that function
outputs=externalfunction(decoded) # outputs is in numpy
outputs= tf.convert_to_tensor(outputs, dtype=tf.float64)
return outputs
, поскольку внешней функции необходимо преобразовать тензор в numpy, используя тензоры symboli c для построения модели как
X = tf.placeholder("float", [None, 64,64,1])
encoder_op = encoder(X)
decoder_op = decoder(encoder_op)
, чтобы сгенерировать ошибку при
decoded=decoded.eval()
InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_2' with dtype float and shape [?,64,64,1]
С другой стороны, если я использую реальные тензоры (non-symboli c one), я получаю следующую ошибку в первой строке функции кодировщика.
ValueError: Unexpectedly found an instance of type `<class 'numpy.ndarray'>`. Expected a symbolic tensor instance.
Мне нужна помощь, чтобы решить эту проблему. Я не знаю, как определить мою модель, собрать и обучить ее с этой конфигурацией. Любые предложения приветствуются.