在Tensorflow中计算输出层的范数

时间:2019-09-02 23:25:48

标签: tensorflow keras keras-layer

如何获取可变自动编码器网络中输出层的值并计算其范数?假设我在Layout中具有以下网络:

Tensorflow

,我想在运行模型后找到输出层的L_1范数,即 inputs = Input(shape=(dim,)) x = Dense(intermediate_dim, activation='relu')(inputs) z_mean = Dense(latent_dim, name='z_mean')(x) z_log_var = Dense(latent_dim, name='z_log_var')(x) z = Lambda(sampling, output_shape=(latent_dim,), name='Z')([z_mean, z_log_var]) encoder = Model(inputs, [z_mean, z_log_var, z], name='encoder') latent_inputs = Input(shape=(latent_dim,), name='z_sampling') x = Dense(intermediate_dim, activation='relu',name='Hidden_Layer')(latent_inputs) outputs = Dense(dim, activation='sigmoid')(x) decoder = Model(latent_inputs, outputs, name='decoder') outputs = decoder(encoder(inputs)[2]) vae = Model(inputs, outputs, name='vae_mlp') 。可用的Tensorflow功能无法帮助我。例如,使用此命令tf.norm(outputs,ord=1)之后 我收到此错误:

K.eval(tf.norm(decoder.layers[2].output,ord=2))

你有什么主意吗?

1 个答案:

答案 0 :(得分:2)

网络的输出是一个numpy数组。因此,您可以使用numpy函数。

import numpy as np
output = vae.predict(input)
l1_norm = np.linalg.norm(output, 1)

关于此错误:

  

InvalidArgumentError:必须输入占位符张量的值   'z_sampling'具有dtype float和形状[?,]

tf.norm(decoder.layers[2].output,ord=2)的求值要求将latent_inputs馈送到名称为z_sampling的解码器。