tensorflow对图像进行拼接的例子
作者:J_PrCz 发布时间:2022-05-30 02:11:49
tensorflow对图像进行多个块的行列拼接tf.concat(), tf.stack()
在深度学习过程中,通过卷积得到的图像块大小是8×8×1024的图像块,对得到的图像块进行reshape得到[8×8]×[32×32],其中[8×8]是图像块的个数,[32×32]是小图像的大小。通过tf.concat对小块的图像进行拼接。
-在做图像卷积的过程中,做了这样一个比较麻烦的拼接,现在还没想到更好的拼接方法,因为是块拼接,开始的时候使用了reshape,但是得到的结果不对,需要确定清楚数据的维度,对于数据的维度很是问题。
import tensorflow as tf
def tensor_concat(f, axis):
x1 = f[0, :, :]
for i in range(1, 8):
x1 = tf.concat([x1, f[i, :, :]], axis=axis)
return x1
def block_to_image(f):
x1 = tf.reshape(f, [64, 1024])
x1 = tf.reshape(x1, [64, 32, 32])
m2 = tensor_concat(x1[0:8, :, :], axis=1)
for i in range(1, 8):
m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1)
m2 = tf.concat([m2, m1], axis=0)
x2 = tf.reshape(m2, [256, 256, 1])
return x2
x = tf.random_normal([ 8, 8, 1024])
with tf.Session() as sess:
m = sess.run(x)
m1 = sess.run(block_to_image(m))
最后通过行拼接和列拼接得到图像大小为256×256×1大小的图像。
对[batch_size, height, weight, channel] 的图像进行1一样的图像块拼接:
在深度神经网络中,会有batch_size个图像大小[256×256×1]的图像进行块的拼接,对于多了一个维度的图像拼接起来,由[batch_size, 8, 8, 1024]拼接为[batch_size,256, 256, 1]。在做着部分时batch_size这部分实在是不知道怎么处理,所以还是用了本办法,使用的函数是append和tf.stack()
def tensor_concat(f, axis):
x1 = f[0, :, :]
for i in range(1, 8):
x1 = tf.concat([x1, f[i, :, :]], axis=axis)
return x1
def block_to_image(f):
x3 =[]
for k in range(f.shape[0]):
x = f[k, :, :, :]
x1 = tf.reshape(x, [64, 1024])
x1 = tf.reshape(x1, [64, 32, 32])
m2 = tensor_concat(x1[0:8, :, :], axis=1)
for i in range(1, 8):
m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1)
m2 = tf.concat([m2, m1], axis=0)
x2 = tf.reshape(m2, [256, 256, 1])
x3.append(x2)
x4 = tf.stack(x3)
return x4
x = tf.random_normal([10, 8, 8, 1024])
with tf.Session() as sess:
m = sess.run(x)
m1 = sess.run(block_to_image1(m))
在学习过程中对tensor不能直接赋值,比如不能写:
x2 = tf.reshape(m2, [256, 256, 1])
x3[k, :, :, 1] = x2
这样的代码,会出现错误:'Tensor' object does not support item assignment
对于带有类似索引的赋值,参考的办法是:
x3 = []
x3.append(x2)
这时候得到的是list的格式,所以接下来将list转化为array,使用的是tf.stack(x3)
来源:https://blog.csdn.net/Jingnian_destiny/article/details/82423900


猜你喜欢
- 本文实例为大家分享了TensorFlow实现简单线性回归的具体代码,供大家参考,具体内容如下简单的一元线性回归一元线性回归公式:其中x是特征
- 本文实例讲述了python简单文本处理的方法。分享给大家供大家参考。具体如下:由于有多线程的影响,c++项目打印出来的时间顺序不一致,导致不
- vue阻止页面回退的方法如何阻止页面回退?VUE中跳转页面后,阻止返回的方法有很多种,这里就不一一列举,我是用vue-prevent-bro
- 最近央视新闻记者王冰冰以清除可爱和专业的新闻业务水平深受众多网友喜爱,b站也有很多up主剪辑了关于王冰冰的视频。我们都是知道b站是一个弹幕网
- (1)、back_log:要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程
- 本文实例为大家分享了python实现书法碑帖图片分割的具体代码,供大家参考,具体内容如下一、功能实现效果1、选择要分割的碑帖图片2、选择碑帖
- 一、引言Windows Communication Foundation(WCF)是Microsoft为构建面向服务的应用程序而提供的统一编
- 每年意甲德甲英超西甲各大联赛的赛程表都是球迷们的必看之物,想起之前写过的一段生成赛程表的代码,用Python来写这类东西太舒服了。这个算法叫
- 打开要设置的数据库表,点击要设置的字段,比如id,这时下方会出现id的列属性表列属性中,通过设置“标识规范”的属性可以设置字段自增,从下图上
- 页面是这样的我尝试了很多次,都不响应。代码是这样的import xlrd###导入数据def read_data(workboo
- 这篇文章主要介绍了python通过移动端访问查看电脑界面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 每次装完系统之后都要重新安装一些软件,安装软件的时候又要上网查找安装的教程,比较麻烦,所以就自己整理了mysql-8.0.15-winx64
- 如下所示:import socketimport threadingimport timedef testconn( host , port
- 前言字典是Python中最强大的数据类型之一,本文将给大家详细介绍关于Python合并两个字典(dict)的相关内容,分享出来供大家参考学习
- MySQL服务器有几个影响其操作的参数(变量)。如果缺省的参数值不合适,可以将其修改为对服务器运行环境更合适的值。例如,如果您有大量的内存,
- 在“Python源码学习笔记:Python万物皆对象”中,我们对Python的对象类型体系有了一定的
- 一、含有一个装饰器#encoding: utf-8############含有一个装饰器#########def outer(func):
- 1、 select top 10 * from ( select top (@Page * 10) ROW_NUMBER() OVER (o
- jsonpathjsonpath 用于多层嵌套 json格式的 解析。pip install jsonpathJsonPath描述$根节点@
- PYTHON3介绍Python是著名的“龟叔”Guido van Rossum在 * 圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语