我有一个Tensor :: tensor,我将对其进行多次切片并即时修改其值。切分后的值将被馈送到网络中。因此,我需要一种高效而优雅的方法来进行切片和送料操作。
我使用的是C ++版本的tensorflow,Python中最直观的方式就像使用numpy的arr [:, h:h + 3,w:w + 3,:]和feeddict一样。
但是在c ++中,像这样
for h{
for w{
for i in range 3{
for j in range 3{
new_tensor(i,j) = m_tensor(h+i,w+j)
}
}
out = sess->run(out_node, in:new_tensor)
m_tensor(h,w) = out.xxx
}
}
方法不如我预期的那么优雅。
起初,我尝试使用Eigen :: tensor的slice操作将其直接馈送到Tensor :: tenser,但是奇怪的错误阻止了它的编译
然后我认为可以,我将其切成薄片然后复制到张量中。
其中显示最多的结果是:
std::copy_n(vec.begin(), vec.size(), input.flat<float>().data())
或
std::memcpy(input.flat<float>().data(), vec.data(), input.NumElements() * sizeof(float))
我期望将值分配给张量然后馈入网络的更快方法,是否有更直观的方法? 以下是我要加速的部分。
for i in range 3{
for j in range 3{
new_tensor(i,j) = m_tensor(h+i,w+j)
}
}