gpt4 book ai didi

python - 使用自动编码器重建潜在空间

转载 作者:行者123 更新时间:2023-11-30 09:30:38 27 4
gpt4 key购买 nike

import numpy as np
import numpy.matlib
import numpy as np
import pandas as pd
from keras.layers import Input, Dense
from keras.models import Model
from keras.optimizers import RMSprop
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler

sgx=np.random.randn(25200, 100)
normx = MinMaxScaler().fit(sgx)
sgxx=normx.fit_transform(sgx)

encoding_dim = 32
input_img = Input(shape=(100,))
encoded = Dense(80, activation='relu')(input_img)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(32, activation='relu')(encoded)
decoded = Dense(64, activation='relu')(encoded)
decoded = Dense(90, activation='relu')(decoded)
decoded = Dense(100, activation='sigmoid')(decoded)

autoencoder = Model(input_img, decoded)
autoencoder.compile(loss='mean_squared_error', optimizer = RMSprop())
# this model maps an input to its encoded representation
encoder = Model(input_img, encoded)
# create the decoder model
encoded_input = Input(shape=(encoding_dim,))
deco = autoencoder.layers[-3](encoded_input)
deco = autoencoder.layers[-2](deco)
deco = autoencoder.layers[-1](deco)
decoder = Model(encoded_input, deco)
autoencoder.fit(sgxx, sgxx,
epochs=100,
batch_size=560)

encoded_imgs = encoder.predict(sgx)
decoded_imgs = decoder.predict(encoded_imgs)

在上面的代码中,我重建了相同的初始维度,我们可以使用AE从初始维度重建较低的维度吗,我的意思是对于我的例子,我有100个维度,然后在减少维度后我只想重建30个维度??

最佳答案

从你提出问题的方式来看,但我认为这只是一个误解。

训练自动编码器的典型方法是使用重建误差。这简单地定义为 ||x - f(g(x))||其中 g 是编码器网络,f 是解码器网络,x 是一些输入示例。根据这个特定的损失 f(g(x)) 必须与 x 具有相同的尺寸(在您的情况下为 100)。

您需要考虑使用解码器重建某些东西意味着什么,您到底想要生成维度为 30 的什么?换个说法,我们可以创建一个具有 30 个维度的 x 表示吗? 答案:可以! 这就是自动编码器经常使用的用途,编码器可以采用一个 100 维的输入并将其维度减少到 30。要获得此表示(在上面给出的代码中将是 32 维),只需通过 g(您的编码器)运行 x 并停止即可。如果目标只是构建此表示,则解码器仅用于训练。

关于python - 使用自动编码器重建潜在空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59414310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com