随着人工智能、5G通信、工业互联网等技术的发展,智能工业正日益成为现代工业发展的主流趋势。智能工业可以通过数字化、智能化、绿色化、协同化的方式实现生产和管理的高效、智能、环保和协同,同时也面临着技术、安全和隐私等方面的挑战和问题。因此,需要加强技术研究和应用实践,保障系统的安全性和可靠性,加强隐私保护和数据安全,推动智能工业的健康发展,为实体经济高质量发展做出贡献。
def replace_batchnorm_to_conv(self,dimension:int=2):
"""Replace Batchnorm to 1D Convolution."""
for op in self.graph.operations.values():
if op.type=='BatchNormalization':
ppq_warning(f'Isolated BatchNormalization({op.name})was detected,'
f'PPQ will replace it to 1*1 Convolution({dimension}D).')
assert len(op.parameters)==4,"BatchNorm should have 4 parameters,namely alpha,beta,mean,var"
alpha=op.parameters[0].value
beta=op.parameters[1].value
mean=op.parameters[2].value
var=op.parameters[3].value
epsilon=op.attributes.get("epsilon",1e-5)
with torch.no_grad():
w=alpha/torch.sqrt(var+epsilon)
w=w.reshape([-1,1]+[1]*dimension)
b=alpha*(-mean)/torch.sqrt(var+epsilon)+beta
op.type='Conv'
op.attributes.clear()
op.attributes['kernel_shape']=[1]*dimension
op.attributes['strides']=[1]*dimension
op.attributes['dilations']=[1]*dimension
op.attributes['pads']=[0,0]*dimension
op.attributes['group']=w.numel()
#remove last 2 variable,make conv has exact 3 input
self.graph.remove_variable(op.inputs[-1])
self.graph.remove_variable(op.inputs[-1])
with torch.no_grad():
op.inputs[1].value=w
op.inputs[2].value=b