【问题标题】:ValueError in Keras: How could I get the model fitted?Keras 中的 ValueError:我怎样才能安装模型?
【发布时间】:2018-11-26 06:36:55
【问题描述】:

我正在尝试使用 keras 拟合我的模型(神经网络),但出现 ValueError 错误。

导入 keras

from keras.models import Sequential

from keras.layers import Dense


classificador_rede_neural = Sequential()


# # Camadas Ocultas e de Saída

# camadas ocultas = (entradas + saídas)/2 #estimando o numero de neurônios em camada oculta
# 
# temos:len(train.columns) - 1   atributos previsores
# 
# 1 classe


#len(train.columns)


camadas_ocultas = round(len(train.columns)/2)



print(camadas_ocultas)


classificador_rede_neural.add(Dense(units=camadas_ocultas, activation='relu',input_dim =len(train.columns) ))#primeira camada


classificador_rede_neural.add(Dense(units=camadas_ocultas, activation='relu' ))#segunda camada


classificador_rede_neural.add(Dense(units=1, activation='sigmoid' ))#camada de saída. a saída é binária, logo units=1

classificador_rede_neural.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

classificador_rede_neural.fit(X_train2,y_train2,batch_size=10,epochs =100)

我收到错误:

 ValueError: Please provide as model inputs either a single array or a list of arrays. You passed: x=              sload        dload  spkts  dpkts  swin  dwin  smean  dmean  \
    0      1.803636e+08     0.000000      2      0     0     0    248      0   
    1      8.810000e+08     0.000000      2      0     0     0    881      0   
    2      8.544000e+08     0.000000      2      0     0     0    534      0   
    3      6.000000e+08     0.000000      2      0     0     0    450      0   
    4      8.504000e+08     0.000000      2      0     0     0   1063      0   
    5      1.045333e+09     0.000000      2      0     0     0    392      0   
    6      1.306667e+09     0.000000      2      0     0     0    980      0   
    7      1.977143e+08     0.000000      2      0     0     0    692      0   

[82332 rows x 22 columns]

如何拟合模型?我的数据有什么问题?

完整代码>https://pastebin.com/jE7erEJs

【问题讨论】:

标签: python-3.x neural-network keras


【解决方案1】:

我认为问题在于您向模型传递了整个 pandas 数据集以及列标题和索引列。为了在数据上训练模型,首先使用 X_train2.valuesy_train2.values 将其转换为 numpy 数组,因为 Keras 模型接受 numpy 数组而不是 pandas 数据集作为输入

类似问题
Pandas DataFrame and Keras

Keras 序列模型的文档
https://keras.io/models/sequential/

编辑回答 cmets
不要单独转换每一列,这是没有意义的。假设您有一个通用数据集 df 和一个名为 labels 的列,您需要做的是

labels = df.pop("labels")
model.fit(x=df.values, y=labels.values)

【讨论】:

  • 如何转换?
  • 看答案。使用X_train2.valuesX_train2.as_matrix()
  • X_train2,y_train2 =train.drop('label',axis=1),train['label'] X_test2,y_test2 =test,classe1_test
  • 我正在尝试使用您的答案,但我被卡住了!你能看一下完整的代码吗?> pastebin.com/jE7erEJs
猜你喜欢
  • 2014-01-23
  • 1970-01-01
  • 2018-07-09
  • 2021-08-09
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多