gpt4 book ai didi

machine-learning - 在 Keras 中正确声明神经网络的 input_shape?

转载 作者:行者123 更新时间:2023-11-30 08:46:09 25 4
gpt4 key购买 nike

我正在尝试编写代码来从 CSV 文件加载数据类型后识别数据类型。因此有 5 个可能的标签,并且特征向量包含列表的列表。特征向量是具有以下形状的列表的列表:

[slash_count、dash_count、colon_count、字母、dot_count、数字]

然后,我将特征和标签向量分成训练集、测试集和验证集。我在 Stackoverflow 上找到了一些有人编写的代码来执行此操作,我也使用了相同的代码:

X_train, X_test, y_train, y_test = train_test_split(ml_list, labels, test_size=0.3, random_state=1)

X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.3, random_state=1)

完成此操作后,我将尺度 [0,1] 中的特征标准化,然后为标签创建分类变量:

min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X_train)
X_test_minmax = min_max_scaler.fit_transform(X_test)
X_val_minmax = min_max_scaler.fit_transform(X_val)

from keras.utils import to_categorical
y_train_minmax = to_categorical(y_train)
y_test_minmax = to_categorical(y_test)
y_val_minmax = to_categorical(y_val)

接下来,我尝试找到新编码变量的形状:

print(y_train_minmax.shape) #(91366, 4)
print(X_train_minmax.shape) #(91366, 6)
print(X_test_minmax.shape) #(55939, 6)
print(X_val_minmax.shape) #(39157, 6)
print(y_train_minmax.shape) #(91366, 4)
print(y_test_minmax.shape) #(55939, 4)
print(y_val_minmax.shape) #(39157, 4)

最后,我构建模型并尝试拟合它:

model = models.Sequential()
model.add(layers.Dense(512, activation='relu', input_shape=(91366, 6)))
model.add(layers.Dense(3, activation='softmax'))
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train_minmax, y_train_minmax, epochs=5, batch_size=128)

运行代码时收到此消息:

ValueError: Error when checking input: expected dense_1_input to have 3 dimensions, but got array with shape (91366, 6)

我相信错误出现在我使用输入形状创建神经网络时。我很难理解我错在哪里。任何帮助都会很棒!

最佳答案

您应该更改此行:

model.add(layers.Dense(512, activation='relu', input_shape=(6,)))

keras 中,您无需直接指定数据集中的示例数量。作为 input_shape,您只需提供单个数据点的形状。

我在您的代码片段中发现的另一个潜在错误是您应该设置:

model.add(layers.Dense(4, activation='softmax'))

由于您的输出单个数据点的形状为(4,)。这与您所说的可能的层不一致,因此我还建议重新检查您的数据。

我发现的另一个可能的错误是,您没有为 traintestvalid 数据集训练单独的缩放器 - 而是单个缩放器在train 集上 - 然后使用经过训练的缩放器缩放其他数据集。

关于machine-learning - 在 Keras 中正确声明神经网络的 input_shape?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243167/

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