Как откалибровать входную форму моей классификации нейронной сети? - PullRequest
0 голосов
/ 30 марта 2020

Я получаю эту ошибку:

ValueError: Ошибка при проверке ввода: ожидалось, что dens_27_input имеет форму (20,), но получил массив с формой (3495,)

Вот мой код:

import pandas as pd
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Input, Dense
from keras.layers import Flatten
from sklearn.preprocessing import StandardScaler
import numpy as np


df = pd.read_csv('../input/nasa-asteroids-classification/nasa.csv')

df = pd.get_dummies(df)

X = df.loc[:, df.columns != 'Harzardous']
y = df.loc[:, 'Hazardous']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)


scaler = StandardScaler().fit(X_train)

X_train = scaler.transform(X_train)

X_test = scaler.transform(X_test)

model = Sequential()

model.add(Dense(64, input_dim=(20), activation = 'relu'))
model.add(Dense(32, activation = 'relu'))
model.add(Dense(16, activation = 'relu'))
model.add(Dense(8, activation = 'relu'))
model.add(Dense(1, activation = 'sigmoid'))

compilation = model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

model.fit(X_train, y_train, epochs=100, batch_size=32)


scores = model.evaluate(X_train, y_train, verbose=False)
print("Training Accuracy: %.2f%%\n" % (scores[1]*100))
scores = model.evaluate(X_test, y_test, verbose=False)
print("Testing Accuracy: %.2f%%\n" % (scores[1]*100))

Как мне это исправить?

Набор данных имеет 20 столбцов после применения к нему get_dummies и 20 строк до его применения.

Ссылка на набор данных: https://www.kaggle.com/shrutimehta/nasa-asteroids-classification

1 Ответ

0 голосов
/ 03 апреля 2020

Ваш входной размер неверен. Распечатать форму X_train, y_train. Они должны иметь формы (X, 20) и (X,1), где X - константа.

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