python - 我在 Stacked-autoencoder 算法中有这个错误,ValueError: logits and labels must have the same shape ((None, 20) vs (None, 1))
问题描述
当我应用堆叠自动编码器作为特征选择时出现此错误。
ValueError:logits 和标签必须具有相同的形状 ((None, 20) vs (None, 1))
这是 Stacked-autoencoder 的代码::
import tensorflow
from tensorflow.keras import layers
from tensorflow.keras import activations
from tensorflow.python.keras.layers import Input, Dense
from tensorflow.python.keras.models import Model
from sklearn.preprocessing import MinMaxScaler
def StackedAutoencoder(x_train, x_test, y_train, y_test):
scalar = MinMaxScaler()
x_train = scalar.fit_transform(x_train)
x_test = scalar.fit_transform(x_test)
input_size = x_train.shape[1]
hidden_size = 9
code_size = 3
input_data = Input(shape=(input_size,))
hidden_1 = Dense(hidden_size, activation='relu')(input_data)
code = Dense(code_size, activation='relu')(hidden_1)
hidden_2 = Dense(hidden_size, activation='relu')(code)
# decode
output_data = Dense(input_size, activation='sigmoid')(hidden_2)
autoencoder = Model(input_data, output_data)
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
autoencoder.fit(x_train, y_train, epochs=30, verbose=0,
batch_size=10, validation_data=(x_test, y_test))
reconstructions = autoencoder.predict(x_test)
return reconstructions
这是我在 main 中调用算法的代码:
import SAE as FS # SAE the file of stacked-autoencoder algorithm
print('CurrentFeatureSelection = ', 'Stacked_Autoencoder')
X_train_fs, X_test_fs = FS.StackedAutoencoder(X_train, X_test, y_train, y_test)
解决方案
推荐阅读
- java - 将复杂的 JSON 列表处理为 POJO
- ruby-on-rails - Rails 不创建关联模型
- javascript - 使用 JavaScript 创建基于数组的表
- spring-boot - Thymeleaf th:text="#{date.format}" 工作但在 messages.properties 中没有条目
- html - 如何使用 Flexbox 水平对齐内容?
- api - 如何使用 api.qrserver 将在 Google 表格中创建的二维码另存为图像?
- python - 需要从html表中提取数据
- google-cloud-platform - 如何使用 Google Cloud PubSub 和 Run 处理资源密集型长时间运行的任务?
- javascript - 提交时禁用按钮在ios上不起作用但在桌面上很好
- javascript - 插入自定义 HTML 字段值并在 PHP 中访问它