我有一个用 Tensorflow.Keras 编写的自定义神经网络,并应用 hard-swish 函数作为激活(如 MobileNetV3 论文中使用的那样):
执行:
def swish(x):
return x * tf.nn.relu6(x+3) / 6
Run Code Online (Sandbox Code Playgroud)
我正在运行量化感知训练并在最后编写一个 protobuf 文件。然后,我使用此代码转换为 tflite(并最终将其部署在 EdgeTPU 上):
tflite_convert --output_file test.tflite --graph_def_file=test.pb --inference_type=QUANTIZED_UINT8 --input_arrays=input_1 --output_arrays=conv2d_3/Sigmoid --mean_values=0 --std_dev_values=255 --default_ranges_min=0 --default_ranges_max=6
Run Code Online (Sandbox Code Playgroud)
这非常有效,当我不除以 6 时,但是,除以 6 时出现此错误:
Unimplemented: this graph contains an operator of type Div for which the quantized form is not yet implemented.
Run Code Online (Sandbox Code Playgroud)
我使用 TF 1.14 进行训练,昨晚使用 TF 1.15 构建以转换为 TFLITE;我正在努力让 TF 2.x 解决一些奇怪的 HDF5 不兼容问题,但如果有人知道如何规避这个问题,那就太好了……谢谢!
我不知道如何搜索这个,但是,我无法找到一个明显的解决方案来解决我的pythonic问题.我想结合两个列表(一个是另一个被操纵的列表)并通过保持列表长度不变来置换它们.
一个例子:
a = ['A','B','C','D']
b = ['a','b','c','d']
combined = [['a','B','C','D'], ['A','b','C','D'], ..., ['a','b','c','d']]
Run Code Online (Sandbox Code Playgroud)
然后我可以使用itertools来置换它们.但是,第一步对我来说不容易管理.我不想要嵌套的for-loops和Co.