Я просто создаю нейронную сеть для данных о вине, просматривая видео с YouTube, и я получил ошибку в model.fit.
Я новичок в машинном обучении, поэтому не знаю никакого решения, поэтому ничего не пробовал.
from sklearn.model_selection import train_test_split
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout
import pandas as pd
import numpy as np
from google.colab import files
np.random.seed(3)
# Number of Wine Classes
classifications = 3
#load dataset
uploaded = files.upload()
for fn in uploaded.keys():
print('User uploaded file "{name}" with length {length} bytes'.format(
name=fn, length=len(uploaded[fn])))
import io
dataset = pd.read_csv(io.StringIO(uploaded['wine.csv'].decode('utf-8')))
X = dataset[['Wine','Alcohol','Malic.acid','Ash','Acl','Mg','Phenols','Flavanoids','Nonflavanoid.phenols','Proanth','Color.int','Hue','OD','Proline']]
y = dataset[['Wine']]
# convert output values to one-hot
x_train = keras.utils.to_categorical(y_train-1, classifications)
x_test = keras.utils.to_categorical(y_test-1, classifications)
# creating model
model = Sequential()
model.add(Dense(10, input_dim=13, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(2, activation='relu'))
model.add(Dense(classifications, activation='softmax'))
# compile
model.compile(loss = "categorical_crossentropy", optimizer = "adam", metrics=['accuracy'])
# fit model
model.fit(x_train, y_train, batch_size=15, epochs=2500, validation_data=(x_test, y_test))
Ошибка
ValueError: Error when checking input: expected dense_1_input to have shape (13,) but got array with shape (3,)
Входные данные для вашей модели заявляют, что должно быть 13 измерений, но кажется, что x_train
имеет только 3??
вы можете проверить мой код по этой ссылке: colab.research.google.com/drive/…
Здесь вы one_hot кодируете входные значения, а не выходные
# convert output values to one-hot
x_train = keras.utils.to_categorical(y_train-1, classifications)
x_test = keras.utils.to_categorical(y_test-1, classifications)
Так должно быть :
# convert output values to one-hot
y_train = keras.utils.to_categorical(y_train-1, classifications)
y_test = keras.utils.to_categorical(y_test-1, classifications)
Затем вам нужно сохранить в X только функции, а не цель, поэтому ваш новый X:
X = dataset[['Alcohol','Malic.acid','Ash','Acl','Mg','Phenols','Flavanoids','Nonflavanoid.phenols','Proanth','Color.int','Hue','OD','Proline']]
И, наконец, не забудьте изменить свою переменную в методе подгонки:
model.fit(X_train, y_train, batch_size=25, epochs=5000, validation_data=(X_test, y_test))
ValueError: Ошибка при проверке ввода: ожидалось, что в плотности 15_input будет фигура (13,), но получен массив с формой (3,)
Спасибо за помощь, но все еще сталкиваюсь с этой проблемой, я меняю код, как вы предлагаете.
Какова форма ваших X, y, X_train и y_train?
набор данных вина, проверьте код здесь colab.research.google.com/drive/…
Проверьте еще раз, потому что это работает для меня, я отредактировал свой ответ, потому что есть другие проблемы
надеюсь, это сработает, никогда не использовал colab ахах: colab.research.google.com/drive/…
вы можете снова увидеть мой код, я меняю, как вы предлагаете, но все еще есть эта проблема colab.research.google.com/drive/…
Вам нужно изменить model.fit(x_train, y_train, batch_size=25, epochs=5000, validation_data=(X_test, y_test)) на model.fit(X_train, y_train, batch_size=25, epochs=5000, validation_data=(X_test, у_тест))
Предоставьте мне доступ, в противном случае пришлите мне общую ссылку. И можете ли вы сказать мне, что лучше всего подходит для кодирования, потому что я новичок в paython и машинном обучении.
С удовольствием ! И для кодирования просто делайте это там, где вам наиболее удобно, мне нравятся jupyter и pycharm, но это личные вкусы;)
откуда вы загружаете
x_train
иy_train
?