我在这里复制了一个基于这个例子的线性自动编码器方法;https://towardsdatascience.com/build-the-right-autoencoder-tune-and-optimize-using-pca-principles-part-ii-24b9cca69bd6
基本上,它是使用单层线性自动编码器与PCA进行比较。X是由维数为5的正态分布随机生成的。代码的核心部分如下所示。
encoder = Dense(encoding_dim, activation="linear", input_shape=(input_dim,), use_bias = True)
decoder = Dense(input_dim, activation="linear", use_bias = True)
autoencoder = Sequential()
autoencoder.add(encoder)
autoencoder.add(decoder)
autoencoder.compile(metrics=['accuracy'],
loss='mean_squared_error',
optimizer='sgd')
autoencoder.summary()
autoencoder.fit(X_train_scaled, X_train_scaled,
epochs=nb_epoch,
batch_size=batch_size,
shuffle=True,
verbose=0)要素图层为
w_encoder = autoencoder.layers[0].get_weights()[1]
w_decoder = autoencoder.layers[1].get_weights()[1]每次我拟合模型时,w_encoder的输出都有很大的不同
Encoder_weights
[[ 0.5596451 -0.7303996 ]
[-0.08105161 0.43715334]
[ 0.7571198 0.4995086 ]
[-0.68543106 0.0496945 ]
[-0.46657953 0.1231109 ]]
Decoder_weights
[[ 0.5596451 -0.7303996 ]
[-0.08105161 0.43715334]
[ 0.7571198 0.4995086 ]
[-0.68543106 0.0496945 ]
[-0.46657953 0.1231109 ]]vs
Encoder_weights
[[ 0.49870995 -0.594432 ]
[-0.03552848 0.3591121 ]
[ 0.6754906 0.42547104]
[-0.5236658 0.02657888]
[-0.36780515 0.07721919]]
Decoder_weights
[[ 0.49870995 -0.594432 ]
[-0.03552848 0.3591121 ]
[ 0.6754906 0.42547104]
[-0.5236658 0.02657888]
[-0.36780515 0.07721919]]有没有办法让层指标在两次运行之间保持稳定?
发布于 2021-03-24 04:17:42
发生这种情况的原因很多。
如果您想要重现,请尝试以下方法:
使用种子。
SEED = 1997
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.random.set_seed(SEED)如果在Nvidia GPU上运行,您还应该使用tensorflow-determinism
pip install tensorflow-determinism你可以这样使用它:
import tensorflow as tf
import os
os.environ['TF_DETERMINISTIC_OPS'] = '1'对于Tensorflow < 2.1,添加上述内容并如下所示:
from tfdeterminism import patch
patch()https://stackoverflow.com/questions/66770588
复制相似问题