В настоящее время я пытаюсь протестировать модель, которую я обучил в ноутбуках Jupyter, но у меня продолжают появляться ошибки, и я не уверен, как структурировать код, чтобы модель могла предсказать вывод. Вот код для моего обучения модели.
model = Sequential()
model.add(Dense(400, input_dim=features,activation='tanh'))
model.add(Dense(150, activation='tanh'))
model.add(Dense(80, activation='tanh'))
model.add(Dense(40, activation='tanh'))
model.add(Dense(5, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.save_weights("testSave.hdf5")
history = model.fit(X, Y, validation_split=0.33,epochs=15)
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
Код работает и прекрасно компилируется. Вот код для попытки создать новую запись и проверить ее на обученной выше модели.
model2 = Sequential()
model2.add(Dense(400, input_dim=features, activation='tanh'))
model2.add(Dense(150, activation='tanh'))
model2.add(Dense(80, activation='tanh'))
model2.add(Dense(40, activation='tanh'))
model2.add(Dense(5, activation='softmax'))
model2.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model2.load_weights("testSave.hdf5")
newData = random.rand(features) # Creates a new array of 87 instances (amount of features I have)
reshaped_to_2d = np.reshape(newData, (-1, 2)) # Attempting to reshape to 2D array as this is what an error is telling me to do. This doesnt work
scaler = preprocessing.Normalizer().fit(reshaped_to_2d)
newDataN = scaler.transform(reshaped_to_2d)
result = model2.predict_classes((newDataN), axis=1)
for item in result:
print("Predicted Value: ", item[0])
Модель выдает ошибку в этой строке reshaped_to_2d = np.reshape(newData, (-1, 2))
, говоря, что она не может преобразовать массив из 87 экземпляров. к массиву 2. Это может быть действительно тривиальной проблемой, но я изо всех сил пытаюсь понять это и не могу найти помощь онлайн. Любая помощь велика, спасибо.
Ошибка возвращается на картинке ниже.
Этот код я использую для создания модели, чтобы она могла тренироваться на 87 столбцах * 100000 строк.
seed = 34
random.seed(seed)
features = 87
classes = 5
n = 100000
errors = 0.4
# Truncate
redundant = int(features/4)
# Classification dataset
X, y = make_classification(n_samples=n, n_classes=classes, n_features=features, \
random_state = 1,n_informative =20, flip_y=errors, \
n_redundant=redundant)
# reshape y to 2D array, it needs to be to append
y = reshape(y, (-1, 1))
scaler = preprocessing.MinMaxScaler(feature_range=(0, 1))
rescaledX = scaler.fit_transform(X)
Xy = concatenate((rescaledX,y),axis=1)
savetxt("myCAData.csv", Xy, delimiter=",")
data = read_csv("myCAData.csv")
print(Xy[:5])
Y = np_utils.to_categorical(y)