【发布时间】:2018-04-29 22:00:33
【问题描述】:
我已经完成了,只是在 KERAS 中训练我的 NN 模型。 这是我的情况。
我有一个文件夹,里面有 30 个 CSV 文件,名称各不相同。
现在,我正在做分类。
- 每个 CSV 文件(如下所示读取数组 dfs 后的 5000,3 本身就是一个训练实例,因此我有 30 个训练实例用于 30 个 CSV)。
- 文件名是标签,我要分类。这些是 3 个唯一标签,使用一种热编码。
- 我对输入形状以及如何将我的训练数据 dfs 重塑为正确形状感到困惑。
注意:30 个观察值本身是 5000 个 CSV 文件,3 个暗淡,文件名是标签。
这是我的代码和错误。
import os
import glob
import pandas as pd
import numpy as np
from keras.preprocessing.text import one_hot
from keras.models import Sequential
from keras.layers import Dense
path = os.getcwd()
file_list = glob.glob(path + '/*.csv')
dfs=np.array([pd.read_csv(fp).values for fp in file_list])
dfs.shape
# (30, 5000, 3)
from sklearn.preprocessing import OneHotEncoder
# define class labels
labels = np.array([1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3])
onehot_encoder = OneHotEncoder(sparse=False)
integer_encoded = labels.reshape(len(labels), 1)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
len(onehot_encoded)
print(onehot_encoded)
# 30
array([[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.]])
model = Sequential()
model.add(Dense(24, input_shape=(5000,3), activation='relu'))
model.add(Dense(8))
model.add(Dense(3, activation='sigmoid'))
# compile the model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
# summarize the model
print(model.summary())
# fit the model
model.fit(dfs, onehot_encoded, epochs=50, verbose=2)
错误: ValueError: 检查模型目标时出错:预期 dense_10 具有 3 个维度,但得到的数组形状为 (30, 3)
【问题讨论】:
标签: python python-3.x numpy neural-network keras