Tensorflow加载多幅图像进一个tensor

这里加载多幅图像进一个tensor,我用的还是opencv读取图像的做法,然后这里要介绍Tensor的一个函数

Tensor Slice(int64 dim0_start, int64 dim0_limit) const;

可以看到它返回的还是一个tensor,参数是一个tensor的切片的起止下标,而且是一个左闭右开的区间,我就是利用这个函数将加载进来的多幅图像塞进去的,并且对获取到的切片操作的时候是会直接作用于原来的tensor上的,因此应该是一个共享地址(应该底层是指针的操作)。废话不说,直接上代码,以加载两幅图像为例子,放到同一个tensor中:

Tensor resized_tensor(DT_FLOAT, TensorShape({ 2,input_height,input_width,1 }));
Tensor ten0 = resized_tensor.Slice(0, 1);
Tensor ten1 = resized_tensor.Slice(1, 1);
CVMat_to_Tensor(img, &ten0, input_height, input_width);
CVMat_to_Tensor(img1, &ten1, input_height, input_width);

这样的话模型输出会是一个第一维度为2的tensor,分别对应输入tensor的两个维度的数据。

这是简单的写在手写数字识别程序上的,结果显示如下:

所以这个的话主要是后面想加载多幅图像直接做预测就不用一幅一幅图像的来做预测,后面可以考虑多幅图像做运算与一幅一幅来的时间对比。

黑夜
象一群又一群
蒙面人
悄悄走近
然后走开
我失去了梦
口袋里只剩下最小的分币
"我被劫了"
我对太阳说
太阳去追赶黑夜
又被另一群黑夜
所追赶

--顾城
上善若水,为而不争。
原文地址:https://www.cnblogs.com/Bearoom/p/12489404.html