如何使用numpy对tensorflow lite中的张量进行运算
我有一个tensorflow图,它试图将一个图像分割成三个单通道图像如何使用numpy对tensorflow lite中的张量进行运算,tensorflow,tensorflow-lite,Tensorflow,Tensorflow Lite,我有一个tensorflow图,它试图将一个图像分割成三个单通道图像 input_image = tf.placeholder(name="input_image", dtype=tf.float32, shape=[512 * 512 *3]) feed_dict ={input_image:resized_image_data} channel_image = tf.reshape(input_image, (512, 512, 3)) 我切片张量,计算模糊,然后在“评估”张量上使用nu
input_image = tf.placeholder(name="input_image", dtype=tf.float32, shape=[512 * 512 *3])
feed_dict ={input_image:resized_image_data}
channel_image = tf.reshape(input_image, (512, 512, 3))
我切片张量,计算模糊,然后在“评估”张量上使用numpy的数据堆栈。
这在tensorflow中工作,但tensorflow lite失败,出现“无法分配内存”错误
如何使用numpy对张量结果进行运算?
我不能使用tf.unstack和tf.stack,因为它们目前没有在tensorflow中实现。精简
logcat是:
07-02 11:20:36.486 6553-6553/camerafragment E/AndroidRuntime:致命异常:主
进程:camerafragment,PID:6553
java.lang.RuntimeException:无法恢复活动{camerafragment/camerafragment.MainActivity}:java.lang.NullPointerException:无法为解释器分配内存
位于android.app.ActivityThread.performResumeActivity(ActivityThread.java:3773)
位于android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3805)
在android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)中
位于android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6642)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
原因:java.lang.NullPointerException:无法为解释器分配内存
位于org.tensorflow.lite.NativeInterpreterWrapper.create解释器(本机方法)
位于org.tensorflow.lite.NativeInterpreterWrapper。(NativeInterpreterWrapper.java:63)
位于org.tensorflow.lite.NativeInterpreterWrapper。(NativeInterpreterWrapper.java:51)
在org.tensorflow.lite.解释器上(解释器.java:90)
在camerafragment.MainActivity.initializeInference(MainActivity.java:230)处
在camerafragment.MainActivity.onResume(MainActivity.java:91)
位于android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1412)
在android.app.Activity.performResume上(Activity.java:7287)
在android.app.ActivityThread.performResumeActivity(ActivityThread.java:3765)上
位于android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3805)
在android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)中
位于android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6642)
位于java.lang.reflect.Method.invoke(本机方法)
r,g,b = channel_image[:,:,0],channel_image[:,:,1],channel_image[:,:,2]
rtensor = tf.convert_to_tensor(r)
gtensor = tf.convert_to_tensor(g)
btensor = tf.convert_to_tensor(b)
rbatch = tf.expand_dims(tf.expand_dims(rtensor, axis=2), axis=0)
gbatch = tf.expand_dims(tf.expand_dims(gtensor, axis=2), axis=0)
bbatch = tf.expand_dims(tf.expand_dims(btensor, axis=2), axis=0)
rblur = tf.squeeze(blur(one_chan_kernel, strides, rbatch, 2), name="rblur")
gblur = tf.squeeze(blur(one_chan_kernel, strides, gbatch, 2), name="gblur")
bblur = tf.squeeze(blur(one_chan_kernel, strides, bbatch, 2), name="bblur")
result_np = np.dstack((rblur.eval(feed_dict=feed_dict), gblur.eval(feed_dict=feed_dict), bblur.eval(feed_dict=feed_dict)))
result = tf.expand_dims(tf.convert_to_tensor(result_np, name="result_tensor"), axis=0)
--------- beginning of crash