Ошибка при проверке цели: ожидается, что dens_13 будет иметь форму (39,), но получил массив с формой (1,) - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю над моделью в Keras, в подмножестве 3 классов, и обнаружил следующую ошибку:

Ошибка типа: __init__() отсутствует 1 обязательный позиционный аргумент: 'units'

Я прочитал несколько похожих вопросов, но ни одна из них мне не помогла.Ошибка на 2-м слое, где я поставил 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, это дает

Ошибка при проверке цели: ожидается, что плотность_13 будет иметь форму (39,), но получен массив с формой (1,)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...