Ошибка преобразования модели Keras в TFlite: проверка не удалась: dim_size> 0 (-65280 против 0) - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь построить модель, используя Keras. Нейронная сеть, которую мне нужно построить, принимает 256 * 256 элементов ввода и разделяет ввод между 256 плотными слоями, каждый из которых имеет 256 узлов. Итак, первые 256 элементов соединяются с первым плотным слоем, следующие 256 элементов - со вторым плотным слоем и т. Д.

Вот часть моего кода (я использую Python 3.x и TensorFlow 2.x)

inp = Input(shape=(256*256,))
linp = [None] * 256
llay = [None] * 256
w = [b] * 256

for x in range(0,256):
    i = x*256
    j = i + 256
    linp[x] = Lambda(lambda x, i, j: x[:,i:j])
    linp[x].arguments = {'i': i,'j': j}
    llay[x] = Dense(n,use_bias = False, activation ="linear")(linp[x](inp))

output = concatenate(llay)
modelo = Model(inp,output)

modelo.set_weights(w)

converter = tf.lite.TFLiteConverter.from_keras_model(modelo)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

Здесь b - матрица 256x256 с определенными весами для инициализации пользовательского веса модели. Когда я пытаюсь выполнить converter.convert(), я получаю следующую ошибку:

2020-03-25 14:43:53.308316: F tensorflow/lite/toco/graph_transformations/propagate_fixed_sizes.cc:1702] Check failed: dim_size > 0 (-65280 vs. 0)Output size for an axis must be greater than 0. Axis 1 computes to size -65280 for StridedSlice op with output "model/lambda_255/strided_slice". Fatal Python error: Aborted

Самое странное, если я заменю 256 на 181 в предыдущем коде, все будет работать, как и ожидалось. Но при значениях в {182, ..., 256, ...} появляется такая ошибка.

Это действительно поможет решить эту проблему. Я не очень опытный в Keras или Tensorflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...