【问题标题】:Keras Model Dense Input Shape Throwing ErrorKeras 模型密集输入形状抛出错误
【发布时间】:2017-08-31 12:39:15
【问题描述】:

我有一个形状为X_train.shape 的特征向量为(52, 54)

当我训练 keras 模型时,它向我抛出错误:

ValueError: Error when checking model input: expected dense_109_input to have shape (None, 52) but got array with shape (52, 54)

我已经尝试了几乎所有我能想到的以及扫描堆栈溢出,但我的问题仍然存在。代码如下:

import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

##### Reading CSV #####  
data = pd.read_csv('Dataset/Emotion_data.csv')

X = data.ix[:, 4:]
y = data['label']

##### Normalizing #####
featureName = list(X)
for name in featureName:
    X[name] = (X[name] - min(X[name]))/(max(X[name]) - min(X[name]))

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=3)

##### Model #####
model = Sequential()

model.add(Dense(100, input_shape=(54,), activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(1, activation='softmax'))

model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])

model.fit(X_train, y_train)
prediction = model.predict(X_test)
print(accuracy_score(y_test, prediction))

如果有人对数据头感兴趣

In[42]: X_train.head()
Out[42]: 
       tempo  total_beats  average_beats  chroma_stft_mean  chroma_stft_std  \
35  0.438961     0.480897       0.505383          0.504320         0.938452   
34  0.520000     0.552580       0.500670          0.581778         0.680247   
63  0.477551     0.361328       0.334990          0.705472         0.357676   
27  0.477551     0.345419       0.309433          0.492245         0.728405   
43  0.520000     0.530305       0.495715          0.306097         0.663995   

    chroma_stft_var  chroma_cq_mean  chroma_cq_std  chroma_cq_var  \
35         0.932494        0.975206       0.394472       0.366960   
34         0.657810        0.654770       0.550766       0.522269   
63         0.333977        0.495473       0.618748       0.591578   
27         0.707998        0.644147       0.628125       0.601222   
43         0.640980        0.591299       0.639918       0.613379   

    chroma_cens_mean    ...       zcr_var  harm_mean  harm_std  harm_var  \
35          0.964034    ...      0.381363   0.021468  0.426776  0.225840   
34          0.755071    ...      0.213207   0.021598  0.115191  0.031476   
63          0.704930    ...      0.197960   0.021620  0.350194  0.163286   
27          0.715832    ...      0.247092   0.022253  0.319208  0.140714   
43          0.784991    ...      0.221276   0.021777  0.656981  0.471881   

    perc_mean  perc_std  perc_var  frame_mean  frame_std  frame_var  
35   0.362241  0.673257  0.467421    0.343459   0.174215   0.048846  
34   0.365434  0.152561  0.031588    0.091940   0.088991   0.018342  
63   0.340043  0.320664  0.116833    0.097610   0.077334   0.015154  
27   0.372315  0.604247  0.380492    0.995443   1.000000   1.000000  
43   0.377154  0.529161  0.296033    0.122519   0.089255   0.018417  

[5 rows x 54 columns]

【问题讨论】:

  • 附带说明,将值/对象分配给“keras”变量可能不是一个好主意。
  • @edouard 感谢您的建议。

标签: python machine-learning keras keras-layer


【解决方案1】:

您没有在第一层正确定义输入形状

model.add(Dense(100, input_shape=(54,), activation='relu'))

尝试将第一层中的代码更改为

model.add(Dense(100, input_shape=(52, 54), activation'relu))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 2019-02-18
    • 2020-08-17
    • 1970-01-01
    • 2017-10-15
    • 2017-03-01
    • 1970-01-01
    • 2022-10-18
    相关资源
    最近更新 更多