#machine-learning #keras #neural-network #conv-neural-network
Вопрос:
У меня есть следующие данные, входными данными для модели являются sampleNo, Модель и методика, а на выходе четыре значения: Прогрев, Время, Результат-I и Результат-II. После нормализации при переходе на однократное кодирование входной параметр становится шестым.
SampleNo Model Technique WarmUp Time Result-I Result-II
1 Test Repart 0.99 31368.5 0.99 0.96
2 Net Sequence 0.99 31368.5 0.92 0.94
3 Net Repart 0.99 31368.5 0.79 0.96
4 Test Clone 0.99 31368.5 0.89 0.90
predictors=data.drop(['WarUp','Time','Result I', 'Result-II'], axis = 1)
target=data[['WarUp','Time','Result I', 'Result-II']]
#Normalising x variable
predictors_cat_converted=pd.get_dummies(predictors, prefix=['Model', 'Technique'])
pre_norms=predictors_cat_converted
#Normalising target variable
target= target.apply(lambda x:(x - x.min(axis=0)) / x.max (axis=0) - x.min (axis=0))
model=Sequential()
model.add(Dense(50, activation= 'relu',input_shape=(6,)))
model.add(Dense(50, activation= 'relu'))
model.add(Dense(50, activation='relu'))#hidden layer
model.add(Dense(4))#output
model.compile(optimizer='adam',loss='mean_squared_error')
model.fit(pre_norms, target,validation_split=.3,epochs=100,verbose=1)
Теперь, когда в качестве входных данных я передаю следующий параметр, я получаю ошибку
row = [1, 'Test','Repart']
newX = asarray([row])
print(model.predict(newX))
Ошибка:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
984 except Exception as e: # pylint:disable=broad-except
985 if hasattr(e, "ag_error_metadata"):
--> 986 raise e.ag_error_metadata.to_exception(e)
987 else:
988 raise
ValueError: Input 0 of layer sequential_8 is incompatible with the layer: expected axis -1 of input shape to have value 6 but received input with shape (None, 3)
Комментарии:
1. Ваша модель ожидает передачи 6 функций (как вы определили в своей модели и обучили), но вы передали 3 функции для прогнозирования!!
2. Спасибо @Kaveh, но как бы я передал шесть изначально, это три входных параметра после кодирования, преобразованных в шесть.
3. Распечатайте преобразованные данные после манекенов, чтобы узнать, какие у вас есть столбцы, и установите на их основе тестовое значение. В любом случае вам следует провести предварительную обработку, прежде чем передавать тестовые данные в вашу модель.