В BigDL я создал модель с использованием функционального API Keras и хочу дополнить ее данными проверки и оценить ее. Model.fit с данными проверки не работает, также как и model.evaluate. Работает подгонка модели только с данными обучения.
Формы X и целевые (y) np.arrays:
формы поезда (89278, 60,1) (89278, 30, 1 )
Валь фигур (7288, 60, 1) (7288, 30, 1)
loss = Loss()
model.compile('Adam',MSECriterion(),metrics = [loss])
model.fit(X_train_dataset,y_train_dataset,batch_size=32, #shuffle = True,
validation_data = (X_validation_dataset, y_validation_dataset),\
nb_epoch = 1,distributed=False)
После обучения в течение одной эпохи я получаю следующую ошибку. Отмечено, что это относится к ClassNLLCriterion , хотя я не использую его как потерю. Я использую только MSECriterion.
Проверить модель ... 2020-04-04 10:24:12 ОШИБКА ThreadPool $: 136 - Ошибка: java .lang.IllegalArgumentException: требование не выполнено: ClassNLLCriterion: Входом в слой должен быть вектор (или мини-пакет векторов); пожалуйста, используйте модуль Reshape для преобразования многомерного ввода в векторы, если необходимо "input dim (3) в scala .Predef $ .require (Predef. scala: 224) в com.intel.analytics.bigdl.nn. ClassNLLCriterion.updateOutput (ClassNLLCriterion. scala: 90) по адресу com.intel.analytics.bigdl.nn.ClassNLLCriterion.updateOutput (ClassNLLCriterion. scala: 69) по адресу com.intel.analytics.bigdl .nb.tb. вперед (AbstractCriterion. scala: 73) на com.intel.analytics.bigdl.optim.Loss.apply (ValidationMethod. scala: 1091) на com.intel.analytics.bigdl.optim.Loss.apply (ValidationMethod. scala: 1079) at com.intel.analytics.bigdl.optim.LocalOptimizer $$ anonfun $ validate $ 2 $$ anonfun $ 11 $$ anonfun $ apply $ 5 $$ anonfun $ apply $ 6.apply (LocalOptimizer. scala: 268 ) at com.intel.analytics.bigdl.optim.LocalOptimizer $$ anonfun $ validate $ 2 $$ anonfun $ 11 $$ anonfun $ apply $ 5 $$ anonfun $ apply $ 6.apply (LocalOptimizer. scala: 267) в scala .collection.TraversableLike $$ anonfun $ map $ 1.apply (TraversableLike. scala: 234) в scala .collection.Traversab leLike $$ anonfun $ map $ 1.apply (TraversableLike. scala: 234) в scala .collection.IndexedSeqOptimized $ class.foreach (IndexedSeqOptimized. scala: 33) в scala .collection.mutable.ArrayOps $. ofRef.foreach (ArrayOps. scala: 186) в scala .collection.TraversableLike $ class.map (TraversableLike. scala: 234) в scala .collection.mutable.ArrayOps $ ofRef.map (ArrayOps. scala: 186) на com.intel.analytics.bigdl.optim.LocalOptimizer $$ anonfun $ validate $ 2 $$ anonfun $ 11 $$ anonfun $ apply $ 5.apply (LocalOptimizer. scala: 267) на com.intel. analytics.bigdl.optim.LocalOptimizer $$ anonfun $ validate $ 2 $$ anonfun $ 11 $$ anonfun $ apply $ 5.apply (LocalOptimizer. scala: 259) в com.intel.analytics.bigdl.utils.ThreadPool $$ anonfun $ invokeAndWait $ 1 $$ anonfun $ apply $ 3.apply (ThreadPool. scala: 133) в scala .concurrent.impl.Future $ PromiseCompletingRunnable.liftedTree1 $ 1 (Future. scala: 24) в scala .concurrent. impl.Future $ PromiseCompletingRunnable.run (Future. scala: 24) в java .util.concurrent.Executors $ RunnableAdapter.call (Executors. java: 511) в java .util.concurrent. .run (ThreadPoolExecutor. java: 624) в java .lang.Thread.run (Thread. java: 748)
Если я пытаюсь оценить модель с использованием данных проверки:
model.evaluate(X_validation_dataset, y_validation_dataset, batch_size=32)
Py4JJavaError: Произошла ошибка при вызове o28.evaluate. : org. apache .spark.SparkException: задание прервано из-за сбоя этапа: задание 2 на этапе 0.0 не выполнено 1 раз, последний сбой: потерянное задание 2.0 на этапе 0.0 (TID 2, localhost, драйвер исполнителя): java .lang.IllegalArgumentException: требование не выполнено: ClassNLLCriterion: входным слоем должен быть вектор (или мини-пакет векторов); пожалуйста, используйте модуль Reshape для преобразования многомерного ввода в векторы, если необходимо "input dim (3) в scala .Predef $ .require (Predef. scala: 224) в com.intel.analytics.bigdl. nn.ClassNLLCriterion.updateOutput (ClassNLLCriterion. scala: 90) в com.intel.analytics.bigdl.nn.ClassNLLCriterion.updateOutput (ClassNLLCriterion. scala: 69) в com.intel.analynn.blig. AbstractCriterion.forward (AbstractCriterion. scala: 73) в com.intel.analytics.bigdl.optim.Loss.apply (ValidationMethod. scala: 1091) в com.intel.analytics.bigdl.optim.Loss.apply ( ValidationMethod. scala: 1079) на com.intel.analytics.bigdl.optim.Evaluator $$ anonfun $ test $ 1 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 2.apply (Evaluator. scala: 74) в com.intel.analytics.bigdl.optim.Evaluator $$ anonfun $ test $ 1 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 2.apply (Evaluator. scala: 73)