Модель категориальных нейронных сетей не запущена: ожидается, что плотная_84 будет иметь форму - PullRequest
2 голосов
/ 10 февраля 2020

У меня есть данные с около 3600 строк и 27 столбцов. В одном из этих столбцов есть метка от 1 до 10, которую я хочу предсказать из остальных.

Модель с нуля:

import tensorflow as tf
sess = tf.Session()
import keras
import pandas
import sklearn
import matplotlib

import pandas as pd

df = pd.read_csv('data.csv')

dataset = df.values

X = dataset[:,0:27]

Y = dataset[:, 8] ///I want column 8 to be my label column

from sklearn import preprocessing

min_max_scaler = preprocessing.MinMaxScaler()
X_scale = min_max_scaler.fit_transform(X)

from sklearn.model_selection import train_test_split
X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X_scale, Y, test_size=0.3)
X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size=0.5)

from keras.models import Sequential
from keras.layers import Dense

model = Sequential([    
    Dense(32, activation='relu', input_shape=(27,)),    
    Dense(32, activation='relu'),    
    Dense(1, activation='softmax'),])

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


Ytest = keras.utils.to_categorical(Y_train,)
print('The one hot label is:', Y_train[5])

hist = model.fit(X_train, Ytest,
                 batch_size=32, epochs=20,          
                 validation_data=(X_val, Y_val))

Ошибка:

ValueError: Error when checking target: expected dense_84 to have shape (1,) but got array with shape (11,)

Я в полном недоумении от того, что здесь не так. Можно использовать толчок в правильном направлении.

1 Ответ

2 голосов
/ 10 февраля 2020

Две вещи:

1 - Похоже, вы забыли одно горячее кодирование вашего Y_train, ошибка гласит, что ваш последний слой ожидает тензор формы [batch_size, 11].

или

2 - Ваш последний плотный слой должен иметь 11 узлов, а не 1

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