之前搞落地问题,肯定会遇到pb模型,模型结点啥玩意的都能烦死。
根据上一篇思路,这里单独开一篇,将模型的头部分输入砍掉,也不用将pca采用tf写,这样方便容易理解。
使得输入的就是固定的input_shape,有一点顾虑,就是tf的resize可能与cv2的不同,那么直接采用tf的resize不是就避免了(ResizeBilinear),我看第一步就是扩展一个维度,从这里输入也可以。
输出就完全是(None,2048),perfect!
这里还有另外一个问题:需要构建模型的网络结构,如果没有网络结构,可能无法将pb模型的参数加载到新的pb模型中。
或者只有一个办法可能规避:将输入直接给resize后,这种我估计还是不能批处理,这就尴尬了。【红字规避了这俩问题】
【我还是喜欢自己去逛商场,就是为了试衣服,买不买无所谓】
这里我做了4个验证:
1.验证经过中间结点时是否需要下一个结点数据,事实说明不需要,说人话就是输入input经过中间一个Op,再由此Op到最后output的结果与从input到output的结果是相同的,而不需要Op的下一个结点Op;
2.直接用结点名字在sess.run中和get_tensor_by_name得到的是一样的结果;
3.从扩展维度那里输入得到的结果与直接输入模型的结果是一样的;
4.上面的都是针对batch=1的,这个验证了还是不能批处理batch>=2,我特么放弃了这个。
本来还想试一下用cv2的resize,后来发现模型中有这些Op
减去128是使得数据有正负???这个和图像的数据归一化可不太一样啊,乘以y那个系数恰好是归一化到1【取个快递路上想明白了】难道输入模型或者说inception/Xception的模型的数据都是[-1,1]而不是[0,1],这个我就蒙蔽了,卧槽。
这样调整模型估计还有其他参数不同,我觉得最后结果肯定也是不同的(绝对意义上,可能有相似之处吧,毕竟同样的模型)
所以综上所述,本菜鸟决定直接采用h5模型得了,最多看看提取feature的相似性吧,如下:
[[0.58567256]]#
另外有相关问题可以加入QQ群讨论,不设微信群
QQ群:868373192
语音图像视频深度-学习群