当前位置:   article > 正文

TensorFlow对数据集的图片操作_tensorflow怎么查看数据集的图片

tensorflow怎么查看数据集的图片

TensorFlow网络在输入Numpy数据时会自动转换为Tensor来处理,但是我们自己也可以去显式的转换:

data_tensor= tf.convert_to_tensor(data_numpy)
  • 1

网络输出的结果仍为Tensor,当我们要用这些结果去执行只能由Numpy数据来执行的操作时就会出现莫名其妙的错误。解决方法

with tf.Session() as sess:
    data_numpy = data_tensor.eval()

  • 1
  • 2
  • 3

数据集的处理,卷积。conv2d

import numpy as np
import tensorflow as tf
from sklearn.datasets import load_sample_images
import matplotlib.pyplot as plt

#输入的照片是三通道的(三维),读取数据

daraset=np.array(load_sample_images().images,dtype=np.float32)

#数据集中有一个寺庙的照片和一个画的照片
b_size,height,weight,channel=daraset.shape#参数分别为图片数目,图片的宽,图片的高,图片的通道
print(b_size,height,weight,channel)

#创建两个卷积核
filter1=np.zeros(shape=(7,7,channel,2),dtype=np.float32)
filter1[:,3,:,0]=1
filter1[3,:,:,1]=2

# filter参数是一个filters的集合
X = tf.placeholder(tf.float32, shape=(None, height, weight, channel))

#经过卷积后的层
conv=tf.nn.conv2d(X,filter=filter1,strides=[1,2,2,1],padding="SAME")

with tf.Session() as sess:
    output=sess.run(conv,feed_dict={X:daraset})

plt.imshow(output[0,:,:,0])#第一个图的第一个特征图
plt.show()
#第一个图的第二个特征图
plt.imshow(output[0,:,:,1])
plt.show()
plt.imshow(output[1,:,:,0])#第一个图的第一个特征图
plt.show()
#第一个图的第二个特征图
plt.imshow(output[1,:,:,1])
plt.show()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

在这里插入图片描述

对图片进行池化操作,max_pool最大池化。

import numpy as np
from sklearn.datasets import load_sample_images
import tensorflow as tf
import matplotlib.pyplot as plt


# 加载数据集
# 输入图片通常是3D,[height, width, channels]
# mini-batch通常是4D,[mini-batch size, height, width, channels]
dataset = np.array(load_sample_images().images, dtype=np.float32)
# 数据集里面两张图片,一个中国庙宇,一个花
batch_size, height, width, channels = dataset.shape
print(batch_size, height, width, channels)

# 创建输入和一个池化层
X = tf.placeholder(tf.float32, shape=(None, height, width, channels))
# TensorFlow不支持池化多个实例,所以ksize的第一个batch size是1
# TensorFlow不支持池化同时发生的长宽高,所以必须有一个是1,这里channels就是depth维度为1
max_pool = tf.nn.max_pool(X, ksize=[1, 4, 4, 1], strides=[1, 4, 4, 1], padding='VALID')
# avg_pool()

with tf.Session() as sess:
    output = sess.run(max_pool, feed_dict={X: dataset})

plt.imshow(dataset[0].astype(np.uint8))
plt.show()
plt.imshow(output[0].astype(np.uint8))  # 画输入的第一个图像
plt.show()

plt.imshow(dataset[1].astype(np.uint8))
plt.show()
plt.imshow(output[1].astype(np.uint8))  # 画输入的第一个图像
plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/123798
推荐阅读
相关标签
  

闽ICP备14008679号