keras java 模型导出_Keras保存模型问题

在尝试将训练好的Keras变分自编码器模型从Python导出到Java时遇到了NameError,错误指出'latent_dim'未定义。'latent_dim'是在Python代码中用于定义潜在维度的变量。当从'h5'文件加载模型时,这个错误出现。模型定义、训练和保存过程完成,但在使用load_model加载时出错。
摘要由CSDN通过智能技术生成

这是一个变分自动编码器网络,我必须定义一个生成潜在z的采样方法,我认为这可能是错误的 . 这个py文件正在进行训练,另一个py文件正在进行在线预测,所以我需要保存keras模型,保存模型没有任何问题,但是当我从'h5'文件加载模型时,它显示错误:

NameError: name 'latent_dim' is not defined

以下是代码:

df_test = df[df['label']==cluster_num].iloc[:,:data_num.shape[1]]

data_scale_ = preprocessing.StandardScaler().fit(df_test.values)

data_num_ = data_scale.transform(df_test.values)

models_deep_learning_scaler.append(data_scale_)

batch_size = data_num_.shape[0]//10

original_dim = data_num_.shape[1]

latent_dim = data_num_.shape[1]*2

intermediate_dim = data_num_.shape[1]*10

nb_epoch = 1

epsilon_std = 0.001

x = Input(shape=(original_dim,))

init_drop = Dropout(0.2, input_shape=(original_dim,))(x)

h = Dense(intermediate_dim, activation='relu')(init_drop)

z_mean = Dense(latent_dim)(h)

z_log_var = Dense(latent_dim)(h)

def sampling(args):

z_mean, z_log_var = args

epsilon = K.random_normal(shape=(latent_dim,), mean=0.,

std=epsilon_std)

return z_mean + K.exp(z_log_var / 2) * epsilon

# note that "output_shape" isn't necessary with the TensorFlow backend

z = Lambda(sampling, output_shape=(latent_dim,))([z_mean, z_log_var])

# we instantiate these layers separately so as to reuse them later

decoder_h = Dense(intermediate_dim, activation='relu')

decoder_mean = Dense(original_dim, activation='linear')

h_decoded = decoder_h(z)

x_decoded_mean = decoder_mean(h_decoded)

def vae_loss(x, x_decoded_mean):

xent_loss = original_dim * objectives.mae(x, x_decoded_mean)

kl_loss = - 0.5 * K.sum(1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1)

return xent_loss + kl_loss

vae = Model(x, x_decoded_mean)

vae.compile(optimizer=Adam(lr=0.01), loss=vae_loss)

train_ratio = 0.95

train_num = int(data_num_.shape[0]*train_ratio)

x_train = data_num_[:train_num,:]

x_test = data_num_[train_num:,:]

vae.fit(x_train, x_train,

shuffle=True,

nb_epoch=nb_epoch,

batch_size=batch_size,

validation_data=(x_test, x_test))

vae.save('./models/deep_learning_'+str(cluster_num)+'.h5')

del vae

from keras.models import load_model

vae = load_model('./models/deep_learning_'+str(cluster_num)+'.h5')

它显示错误: NameError: name 'latent_dim' is not defined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值