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
Python 如何将在自定义循环子类tf.keras.model中训练的对象转换为tflite?_Python_Tensorflow_Tensorflow2.0_Tensorflow Lite_Tf.keras - Fatal编程技术网

Python 如何将在自定义循环子类tf.keras.model中训练的对象转换为tflite?

Python 如何将在自定义循环子类tf.keras.model中训练的对象转换为tflite?,python,tensorflow,tensorflow2.0,tensorflow-lite,tf.keras,Python,Tensorflow,Tensorflow2.0,Tensorflow Lite,Tf.keras,我在将自定义循环中经过训练的子类模型(tf.keras.model)转换为TFLite时遇到问题 假设我们有一个小型CNN体系结构,它使用输入数据(x)和依赖于批大小和其他DIM的附加信息(add_info): class ContextExtractor(tf.keras.Model): 定义初始化(自): super()。\uuuu init\uuuuu() self.model=self.\u get\u model() def呼叫(self,x,training=False,**kwar

我在将自定义循环中经过训练的子类模型(
tf.keras.model
)转换为TFLite时遇到问题

假设我们有一个小型CNN体系结构,它使用输入数据(
x
)和依赖于批大小和其他DIM的附加信息(
add_info
):

class ContextExtractor(tf.keras.Model):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.model=self.\u get\u model()
def呼叫(self,x,training=False,**kwargs):
b、 h,w,c=x形状
add_info=tf.zero((b,h,w,c),dtype=tf.float32)
features=self.model(tf.concat([x,add_info],axis=-1),training=training)
返回特性
def__获取_模型(自):
返回自我。uuuu获得小的uCNN()
def_uu_uget_small_cnn(self):
model=tf.keras.Sequential()
add(layers.Conv2D(32,(3,3),跨步=(2,2),padding='same'))
添加模型(layers.LeakyReLU(alpha=0.2))
add(layers.Conv2D(32,(3,3),跨步=(2,2),padding='same'))
添加模型(layers.LeakyReLU(alpha=0.2))
add(layers.Conv2D(64,(3,3),跨步=(2,2),padding='same'))
添加模型(layers.LeakyReLU(alpha=0.2))
add(layers.Conv2D(128,(3,3),跨步=(2,2),padding='same'))
添加模型(layers.LeakyReLU(alpha=0.2))
add(layers.Conv2D(256,(3,3),跨步=(2,2),padding='same'))
添加模型(layers.LeakyReLU(alpha=0.2))
添加(layers.globalaveragepoolig2d())
回归模型
我在自定义循环模式下训练它(使用
tf.GradientTape
)。这意味着我并没有编译模型,我只是按原样使用它

现在我想将其转换为SavedModel格式,因为我想在TFLite中移植我的模型。但当我运行类似于:

tf.saved\u model.save(model,路径到文件)

我得到了如下警告:
跳过Keras模型的完全序列化,因为它的输入没有定义。

当然,我得到的
.pb
文件非常小,里面什么都没有

有人能提供如何将子类模型转换为SavedModel的完整解释吗?或者我可以不使用它将我的模型转换为TFLite