import tensorflow as tf
import umap.umap_ as umap
import numpy as np

# 定义网络模型
def my_model():
    inputs = tf.keras.Input(shape=(784,))
    x = tf.keras.layers.Dense(64, activation='relu')(inputs)
    x = tf.keras.layers.Dense(32, activation='relu')(x)
    outputs = tf.keras.layers.Dense(10, activation='softmax')(x)
    model = tf.keras.Model(inputs=inputs, outputs=outputs)
    return model

# 加载 MNIST 数据集
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train = x_train.reshape(60000, 784).astype('float32') / 255
x_test = x_test.reshape(10000, 784).astype('float32') / 255

# 创建模型
model = my_model()

# 获取中间层输出
intermediate_layer_model = tf.keras.Model(inputs=model.input, outputs=model.get_layer(index=1).output)
intermediate_output = intermediate_layer_model.predict(x_train)

# 使用 UMAP 进行降维
umap_embedding = umap.UMAP(n_neighbors=5, min_dist=0.3).fit_transform(intermediate_output)

# 将 NumPy 数组转换为 Tensor
umap_embedding_tensor = tf.convert_to_tensor(umap_embedding)

# 打印结果
print(umap_embedding_tensor)

# 可视化降维结果
import matplotlib.pyplot as plt

plt.scatter(umap_embedding[:, 0], umap_embedding[:, 1], c=y_train, cmap='Spectral')
plt.title('UMAP projection of the MNIST dataset')
plt.xlabel('UMAP dimension 1')
plt.ylabel('UMAP dimension 2')
plt.show()
TensorFlow 1.15 中间层特征 UMAP 降维及可视化

原文地址: https://www.cveoy.top/t/topic/jr7C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录