gpt4 book ai didi

python - Keras 自动编码器简单示例有一个奇怪的输出

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:02 24 4
gpt4 key购买 nike

我正在尝试运行一个简单的自动编码器,所有的训练输入都是相同的。训练数据特征等于3,隐藏层有3个节点。我用那个输入训练自动编码器,然后我尝试再次预测它(编码/解码)(所以如果自动编码器按原样传递所有内容而没有任何更改它应该可以工作)

无论如何,事实并非如此,我有点想明白为什么。我不确定我的代码是否有问题,或者我对 autoencdoer 实现的理解有问题。这是引用代码。

附言我试过 epoches 的数量、训练集中的示例数量、批量大小,使训练数据值介于 0-1 之间,并跟踪损失值,但这也无济于事。

`

from keras.layers import Input, Dense
from keras.models import Model
import numpy as np
# this is the size of our encoded representations
encoding_dim = 3

x_train=np.array([[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]])
in= Input(shape=(3,))
encoded = Dense(encoding_dim, activation='relu')(in)
decoded = Dense(3, activation='sigmoid')(encoded)

# this model maps an input to its reconstruction
autoencoder = Model(in, decoded)
autoencoder.compile(optimizer='adadelta', loss='mse')

autoencoder.fit(x_train, x_train,
epochs=100,
batch_size=4)
autoencoder.predict(x_train)

`

我得到的输出应该与输入相同(或至少接近)但我得到的是这个)

`Out[180]: 
array([[ 0.80265796, 0.89038897, 0.9100889 ],
[ 0.80265796, 0.89038897, 0.9100889 ],
[ 0.80265796, 0.89038897, 0.9100889 ],
...,
[ 0.80265796, 0.89038897, 0.9100889 ],
[ 0.80265796, 0.89038897, 0.9100889 ],
[ 0.80265796, 0.89038897, 0.9100889 ]], dtype=float32)`

任何帮助将不胜感激,很可能我理解错了所以希望这个问题不难回答。

最佳答案

错误在这里decoded = Dense(3, activation='sigmoid')(encoded)

你不应该使用 sigmoid 激活,因为它会将输出限制在范围 (0, 1) 内,将 sigmoid 替换为 linear 或者只是删除它,你可以添加更多的时代,例如训练 1000 个 epoch。在这种设置下,我得到你想要的

[[ 0.98220336  1.98066235  2.98398876]
[ 0.98220336 1.98066235 2.98398876]
[ 0.98220336 1.98066235 2.98398876]
[ 0.98220336 1.98066235 2.98398876]
[ 0.98220336 1.98066235 2.98398876]
[ 0.98220336 1.98066235 2.98398876]
[ 0.98220336 1.98066235 2.98398876]
[ 0.98220336 1.98066235 2.98398876]
[ 0.98220336 1.98066235 2.98398876]]

此外,您应该将输入的 in 替换为另一个名称,因为它是 Python 中的 keyword :-)。

关于python - Keras 自动编码器简单示例有一个奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44601367/

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