Возможно, причина, по которой вы читаете пустые ячейки, связана с использованием правильного подкомпонента Apache POI для чтения файлов Excel. Используйте HSSF (Horrible SpreadSheet Format) для форматов XLS и XSSF (формат XML SpreadSheet) для форматов XLSX.
Что касается самого кода, вы можете уточнить свое логическое выражение. Теперь, когда вы используете этот или оператор (||
),
str != null
и else
вашего оператора if будет выполняться, если str == null
. Первая часть оператора if вызовет NumberFormatException
при вызове Double.parseDouble
, если str
не может быть проанализирован как число.
Возможно, следующий фрагмент кода поможет вам:
if (str == null || str.trim().isEmpty()) {
// handle null and empty strings
} else if (cell.getType() == Cell.CELL_TYPE_NUMERIC) {
System.out.println("Cell is numeric.");
num = cell.getNumericCellValue();
} else {
// If the cell is not numeric, Double.parseDouble(str)
// will most likely throw a NumberFormatException
}
Чтобы узнать больше о Cell
, прочитайте его Javadoc .
Преобразователю требуется знать форму входного тензора. Только 1-е измерение (партия) может быть неизвестно (None
). В некоторых случаях Keras не аннотирует известную тензорную форму. Вы можете указать входную форму, передав необязательный аргумент input_shapes
:
converter = tf.contrib.lite.TFLiteConverter.from_keras_model_file(
graphFile,
input_shapes={'embedding_input': [1, vocab_size]}
)
См. Также похожую проблему: Tensorflow - ошибка преобразования модели h5 в tflite