ожидаемое другое измерение от test_set в керасе - PullRequest
0 голосов
/ 22 апреля 2019

Я пытался сделать простой проект, такой как "Mnist", но я нашел ошибку о несоответствии плотных

я пытался использовать другой набор данных из https://github.com/amir-saniyan/HodaDatasetReader и пытался последовать за мной до "мнист" но эта ошибка произошла!

Traceback (most recent call last): File "train..py", line 51, in <module> score = network.evaluate(x_test, y_test) File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 1102, in evaluate batch_size=batch_size) File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 789, in _standardize_user_data exception_prefix='target') File "/usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py", line 128, in standardize_input_data 'with shape ' + str(data_shape)) ValueError: Error when checking target: expected dense_2 to have 2 dimensions, but got array with shape (20000, 10, 2)

и ошибка в этой строке:

score = network.evaluate(x_test, y_test)"

как я определяю свои data_Set:

import numpy as np
import matplotlib.pyplot as plt
from HodaDatasetReader.HodaDatasetReader import read_hoda_cdb, read_hoda_dataset
plt.rcParams['figure.figsize'] = (7,9) # Make the figures a bit bigger
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.utils import np_utils, to_categorical

загрузка данных тренировки

nb_classes = 10
x_train, y_train = read_hoda_dataset(dataset_path='HodaDatasetReader/DigitDB/Train 60000.cdb',
                                images_height=32,
                                images_width=32,
                                one_hot=False,
                                reshape=True)
x_test, y_test = read_hoda_dataset(dataset_path='HodaDatasetReader/DigitDB/Test 20000.cdb',
                              images_height=32,
                              images_width=32,
                              one_hot=True,
                              reshape=False)

x_train = x_train.reshape((60000, 32 * 32))
x_train = x_train.astype('float32') / 255
x_test = x_test.reshape((20000, 32 * 32))
x_test = x_test.astype('float32') / 255

y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

модель

network = Sequential()
network.add(Dense(512, activation='relu', input_shape=(32 * 32,)))
network.add(Dense(10, activation='softmax'))

и прогноз

network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
network.fit(x_train, y_train, epochs=1, batch_size=1000)
score = network.evaluate(x_test, y_test)###error was here :(

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

У вас проблема с y_test.Вы можете изменить код с помощью следующего кода, потому что между вашими x_train, y_train и x_test, y_test.

x_test, y_test = read_hoda_dataset(dataset_path='HodaDatasetReader/DigitDB/Test 20000.cdb',
                              images_height=32,
                              images_width=32,
                              one_hot=False,
                              reshape=True)
существует разная инициализация.
0 голосов
/ 08 мая 2019

как я обнаружил, нам не нужно менять форму y-test, поэтому просто удалите эту часть кода: "y_test = to_categorical (y_test)" и это сработало !!!

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