Я пытаюсь построить модель, используя 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.