【发布时间】:2020-06-05 21:04:03
【问题描述】:
我创建了以下简单的自动编码器,用作数据的降维。输入data 包含10K 个integer 值样本,其中类为0 或1:
import numpy as np
import pandas as pd
from keras import Model, Input
from keras.layers import Dense
from sklearn.model_selection import train_test_split
def construct_network(X_train):
input_dim = X_train.shape[1]
neurons = 64
input_layer = Input(shape=(input_dim,))
encoded1 = Dense(neurons, activation='relu')(input_layer)
encoded = Dense(int(neurons / 2), activation='relu')(encoded1)
decoded1 = Dense(neurons, activation='relu')(encoded)
output_layer = Dense(input_dim, activation='linear')(decoded1)
autoencoder = Model(inputs=input_layer, outputs=output_layer)
return autoencoder
data, labels = read_data('/Users/A/datasets/data.csv')
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2)
autoencoder = construct_network(X_train)
autoencoder.compile(optimizer='adam', loss='mse', metrics=['acc'])
history = autoencoder.fit(X_train, X_train,
epochs=100,
batch_size=64,
validation_split=0.2,
use_multiprocessing=True)
y_pred = autoencoder.predict(X_test, use_multiprocessing=True)
mse_per_sample = np.mean(np.power(X_test - y_pred, 2), axis=1)
error = pd.DataFrame({'error': mse_per_sample, 'true_label': y_test})
print(error)
我有两个问题:
- 选择
loss='mse'适合这个问题吗? - 如何计算最后一行
error = pd.DataFrame({'error': mse_per_sample, 'true_label': y_test})中mse_per_sample和y_test之间的校正预测值的百分比@
谢谢
【问题讨论】:
标签: machine-learning keras deep-learning data-mining autoencoder