我正在尝试使用Keras构建模型。我需要构建的神经网络需要256 * 256的元素输入,并将输入分成256个Dense层,每个层有256个节点。因此,前256个元素连接到第一个Dense层,接下来的256个元素连接到第二个Dense层,依此类推。
这是我代码的一部分(我正在使用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不太有经验。