Я впервые использую python и Keras для машинного обучения, я привык к MATLAB. В основном у меня есть паркет, который содержит метки в виде одного столбца и текст в качестве другого столбца. Я беру текст и векторизую его, используя вложение GloVe, так что после всего этого у меня остается 2 столбца: векторизация, которая имеет ndarray с 4000 числами в каждом массиве numpy; и столбец метки. Затем я пытаюсь использовать этот векторизованный столбец в качестве входных данных для моей модели, но именно здесь я сталкиваюсь с проблемами.
pd_df.head(1) #pd_df is my dataframe
вывод:
vectorized label
0 [-0.10767000168561935, 0.11052999645471573, 0.... 0
Затем я разделяю свои данные и преобразую в ndarrays:
from sklearn.model_selection import train_test_split
train, test = train_test_split(pd_df, test_size=0.3)
trainLabels = train.as_matrix(columns=['label'])
train = train.as_matrix(columns=['vectorized'])
testLabels = test.as_matrix(columns=['label'])
test = test.as_matrix(columns=['vectorized'])
Затем я проверяю форму моих данных:
train.shape
(410750, 1)
Это - то, где мое отсутствие знания о numpy входит, потому что этот размер не имеет смысла для меня. Похоже, что это должно быть (410750, 4000), потому что каждый элемент представляет собой массив из 4000 элементов.
После этого я настроил свою модель:
from keras.layers import Input, Dense
from keras.models import Model
from keras.optimizers import SGD
from keras.losses import binary_crossentropy
from keras.metrics import binary_accuracy
inputs = Input(shape=(4000,))
x = Dense(units=2000, activation='relu')(inputs)
x = Dense(units=500, activation='relu')(x)
output = Dense(units=2, activation='softmax')(x)
model = Model(inputs=inputs, outputs=output)
model.compile(optimizer=SGD(), loss=binary_crossentropy, metrics=['accuracy'])
model.fit(train,
trainLabels,
epochs=50,
batch_size=50)
Тогда я продолжаю получать ошибку:
ValueError: Error when checking input: expected input_13 to have shape (4000,) but got array with shape (1,)
Как я уже говорил, я новичок в машинном обучении в мире питонов, поэтому любая помощь будет потрясающей.
Спасибо за любую помощь.