Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么tensorflow TFLiteConverter.from_会话要求输入和输出的大小相同_Tensorflow_Tensorflow Lite - Fatal编程技术网

为什么tensorflow TFLiteConverter.from_会话要求输入和输出的大小相同

为什么tensorflow TFLiteConverter.from_会话要求输入和输出的大小相同,tensorflow,tensorflow-lite,Tensorflow,Tensorflow Lite,我正在尝试使用TFLiteConverter转换我的网络。所以我首先尝试了示例代码。它起作用了。但经过一些修改后,它会发回错误。似乎输入数组和输出数组的大小必须相同。我只是不明白为什么。有人能帮我吗 我将img的大小从修改为[1,64,64,3],将var的大小从[1,64,3,1]修改为[1,64,3,1] 完整的代码粘贴在下方在此处输入代码 import tensorflow as tf img = tf.placeholder(name="img", dtype=tf.float32,

我正在尝试使用TFLiteConverter转换我的网络。所以我首先尝试了示例代码。它起作用了。但经过一些修改后,它会发回错误。似乎输入数组和输出数组的大小必须相同。我只是不明白为什么。有人能帮我吗

我将img的大小从修改为[1,64,64,3],将var的大小从[1,64,3,1]修改为[1,64,3,1] 完整的代码粘贴在下方
在此处输入代码

import tensorflow as tf

img = tf.placeholder(name="img", dtype=tf.float32, shape=(1, 64, 64, 1))
var = tf.get_variable("weights", dtype=tf.float32, shape=(1, 64, 3, 1))
val = tf.matmul(img,var)
out = tf.identity(val, name="out")

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(val.shape)
    converter = tf.lite.TFLiteConverter.from_session(sess, [img], [out])
    tflite_model = converter.convert()
    open("converted_model.tflite", "wb").write(tflite_model)
错误消息:
ValueError:对于输入形状为[1,64,64,1]、[1,64,3,1]的“MatMul”(op:“BatchMatMulV2”),维度必须相等,但为1和3。问题不在于TFLite转换,而在于首先构建图形

tf.matmul
对张量中最内层的2D矩阵进行运算。因此,在您的例子中,您试图将形状为
64x1
的矩阵乘以大小为
3x1
的矩阵,这是无效的。矩阵乘法要求第一个操作数的列等于第二个操作数的行,但此处
 1!=3
所以它不起作用

例如,将
3
替换为
1
,则它将工作:

import tensorflow as tf

img = tf.placeholder(name="img", dtype=tf.float32, shape=(1, 64, 64, 1))
var = tf.get_variable("weights", dtype=tf.float32, shape=(1, 64, 3, 1))
val = tf.matmul(img,var)
out = tf.identity(val, name="out")