帮我写一个自编码器的程序
时间: 2023-04-03 18:04:21 浏览: 62
好的,以下是一个简单的自编码器的程序:
```python
import tensorflow as tf
# 定义输入数据
input_data = tf.keras.layers.Input(shape=(784,))
# 定义编码器
encoder = tf.keras.layers.Dense(128, activation='relu')(input_data)
encoder = tf.keras.layers.Dense(64, activation='relu')(encoder)
encoder = tf.keras.layers.Dense(32, activation='relu')(encoder)
# 定义解码器
decoder = tf.keras.layers.Dense(64, activation='relu')(encoder)
decoder = tf.keras.layers.Dense(128, activation='relu')(decoder)
decoder = tf.keras.layers.Dense(784, activation='sigmoid')(decoder)
# 定义自编码器
autoencoder = tf.keras.models.Model(inputs=input_data, outputs=decoder)
# 编译自编码器
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
# 加载数据集
(x_train, _), (x_test, _) = tf.keras.datasets.mnist.load_data()
# 数据预处理
x_train = x_train.astype('float32') / 255.
x_test = x_test.astype('float32') / 255.
x_train = x_train.reshape((len(x_train), 784))
x_test = x_test.reshape((len(x_test), 784))
# 训练自编码器
autoencoder.fit(x_train, x_train,
epochs=50,
batch_size=256,
shuffle=True,
validation_data=(x_test, x_test))
```
这个程序实现了一个简单的自编码器,用于对 MNIST 数据集中的手写数字进行压缩和解压缩。