区块链是计算机网络节点之间共享的分布式数据库或分类帐。作为一个数据库,区块链以电子形式存储信息。区块链以其在比特币等加密货币系统中的关键角色而闻名,用于维护安全和去中心化的交易记录。区块链的创新在于,它确保了数据记录的忠诚度和安全性,并在不需要信任的第三方的情况下产生信任。
1将filter reshape成2维[filter_height*filter_weight*in_channels,output_channels]
2从input中提取image patches,形成虚拟tensor[batch,out_height,out_width,filter_height*filter_width*in_channels]
3对于每个batch,右乘filter matrix和image patch vector
示例:
output[b,i,j,k]=
sum_{di,dj,q}input[b,strides[1]*i+di,strides[2]*j+dj,q]*
filter[di,dj,q,k]
Must have`strides[0]=strides[3]=1`.For the most common case of the same
horizontal and vertices strides,`strides=[1,stride,stride,1]`.
用一个例子来说明:
input的维度为[2,5,5,4]表示batch_size为2,图片是5*5,输入通道数为4,
filter的维度为[3,3,4,2]表示卷积核大小为3*3,输入通道数为4,输出通道数为2
步长为1,padding方式选用VALID
典型数据库和区块链之间的一个关键区别是数据的结构模式。区块链以组的形式收集信息,称为包含信息集。块具有一定的存储容量。填充时,它将关闭并链接到先前填充的块,形成一个称为区块链的数据链。添加块后的所有新信息都被编译成新形成的块。一旦填充,该块也将添加到链中。
auto nchw_offset_output=new Tensor(offset_output,Tensor::CAFFE);
offset_output->copyToHostTensor(nchw_offset_output);
auto feature_output=net->getSessionOutput(session,"2841");
auto nchw_feature_output=new Tensor(feature_output,Tensor::CAFFE);
feature_output->copyToHostTensor(nchw_feature_output);
数据库通常将其数据构造成一个表,而区块链,顾名思义,将其数据构造成一个串在一起的块(块)。当以去中心化的性质实现时,这种数据结构固有地形成一个不可逆的数据时间表。当一个块被填充时,它被固定并成为这个时间表的一部分。当添加到链中时,链中的每个块都被赋予了一个精确的时间戳。
memcpy(nhwc_tensor->host<float>(),resized_img.data,nhwc_tensor->size());
input->copyFromHostTensor(nhwc_tensor);
MNN::Timer time;
time.reset();
net->runSession(session);
MNN_PRINT("use time%f msn",time.durationInUs()/1000.f);
auto offset_output=net->getSessionOutput(session,"2830");