检查目标时出错:预期density_13的形状为(39,),但数组的形状为(1,)

时间:2019-04-23 10:27:14

标签: tensorflow machine-learning deep-learning keras-layer tf.keras

我正在Keras的3个类子集上处理模型,并遇到以下错误:

  

TypeError:__init__()缺少1个必需的位置参数:'units'

我阅读了多个类似的问题,但到目前为止没有一个帮助我。错误在第二层,我放了20。

代码如下:

import tensorflow as tf
from keras import backend as K
#from tensorflow.python.saved_model import builder as saved_model_builder
#from tensorflow.python.saved_model import tag_constants, signature_constants, signature_def_utils_impl

from keras.models import Sequential

from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
import numpy as np
sess = tf.Session()
K.set_session(sess)
K.set_learning_phase(0)
#model_version = "2"


import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('KDD_Dataset.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 41:42].values
# Encoding categorical data X
from sklearn.preprocessing import LabelEncoder
labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])
X[:,1] = labelencoder_X.fit_transform(X[:,1])
X[:,2] = labelencoder_X.fit_transform(X[:,2])
#
from sklearn.preprocessing import OneHotEncoder
onehotencoder_0 = OneHotEncoder(categorical_features=[0])
onehotencoder_1 = OneHotEncoder(categorical_features=[1])
onehotencoder_2 = OneHotEncoder(categorical_features=[2])
X = onehotencoder_0.fit_transform(X).toarray()
X = onehotencoder_1.fit_transform(X).toarray()
X = onehotencoder_2.fit_transform(X).toarray()

# Encoding categorical data y
from sklearn.preprocessing import LabelEncoder
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
max(y)

# Splitting the dataset into the Training set and Test set
#from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size = 0.2, 
                                                    random_state = 0)
# create the model
model = Sequential()
model.add(Dense(input_dim=45,   init='uniform', activation='relu', output_dim = 20))
model.add(Dense(ouput_dim=20, init='uniform', activation='relu'))
model.add(Dense(output_dim=39, init='uniform', activation='sigmoid'))
# compile the model
# compile the model
from keras import optimizers
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd,)

print(X_train.shape)
print(y_train.shape)
model.fit(X_train, y_train, validation_data=(X_test, y_test), nb_epoch=200, batch_size=5, verbose=0)

当我调试model.fit时,它会给出

  

检查目标时出错:预期density_13的形状为(39,),但数组的形状为(1,)

0 个答案:

没有答案