IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Tensorflow2 tf.nn.con2d()进行卷积运算及其可视化 -> 正文阅读

[人工智能]Tensorflow2 tf.nn.con2d()进行卷积运算及其可视化

1.tf.nn.con2d()函数介绍

tf.nn.con2d()函数参数如下图所示:

tf.nn.conv2d(
? ? input,
? ? filter,
? ? strides,
? ? padding,
? ? use_cudnn_on_gpu=True,
? ? data_format='NHWC',
? ? dilations=[1, 1, 1, 1],
? ? name=None
)

参数说明参考:https://tensorflow.google.cn/api_docs/python/tf/nn/conv2d

Args

inputA?Tensor. Must be one of the following types:?half,?bfloat16,?float32,?float64. A Tensor of rank at least 4. The dimension order is interpreted according to the value of?data_format; with the all-but-inner-3 dimensions acting as batch dimensions. See below for details.
filtersA?Tensor. Must have the same type as?input. A 4-D tensor of shape?[filter_height,?filter_width,?in_channels,?out_channels]
stridesAn int or list of?ints?that has length?1,?2?or?4. The stride of the sliding window for each dimension of?input. If a single value is given it is replicated in the?H?and?W?dimension. By default the?N?and?C?dimensions are set to 1. The dimension order is determined by the value of?data_format, see below for details.
paddingEither the?string?"SAME"?or?"VALID"?indicating the type of padding algorithm to use, or a list indicating the explicit paddings at the start and end of each dimension. When explicit padding is used and data_format is?"NHWC", this should be in the form?[[0,?0],?[pad_top,pad_bottom],?[pad_left,?pad_right],?[0,?0]]. When explicit padding used and data_format is?"NCHW", this should be in the form?[[0,?0],?[0,?0],[pad_top,?pad_bottom],?[pad_left,?pad_right]].
data_formatAn optional?string?from:?"NHWC",?"NCHW". Defaults to?"NHWC". Specify the data format of the input and output data. With the default format "NHWC", the data is stored in the order of:?batch_shape + [height,?width,?channels]. Alternatively, the format could be "NCHW", the data storage order of:?batch_shape + [channels,?height,?width].
dilationsAn int or list of?ints?that has length?1,?2?or?4, defaults to 1. The dilation factor for each dimension ofinput. If a single value is given it is replicated in the?H?and?W?dimension. By default the?N?and?C?dimensions are set to 1. If set to k > 1, there will be k-1 skipped cells between each filter element on that dimension. The dimension order is determined by the value of?data_format, see above for details. Dilations in the batch and depth dimensions if a 4-d tensor must be 1.
nameA name for the operation (optional).

2.tf.nn.con2d()卷积运算

2.1 使用数据

flower_photos数据集中选一张玫瑰花图片

2.2代码实现卷积运算

2.2.1 使用引用包

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import tensorflow as tf

2.2.2显示读取显示图片

data = Image.open("roses_483444865_65962cea07_m.jpg")	#返回一个PIL图像对象
plt.imshow(data)
plt.show()

2.2.3对图片进行维度变换

变换为input参数所需格式,即:

[batch_size,filter_height,?filter_width,?in_channels]

这里是[1,240,180,3]

x=np.array(data)
x=x/255
x=x.reshape(1,240,180,3)
print(x.shape)

?2.2.4 数组转化为张量

image_tensor=tf.convert_to_tensor(x)
x_input = tf.cast(image_tensor,tf.float32)

?2.2.5设置filter参数

这里使用kernel_in命名,即卷积核。维度为[3,2,1,3]([filter_height,?filter_width,?in_channels,?out_channels])out_channel需要和input参数最后一个相同。

padding包含"SAME"和"VALID","SAME"输出结果保持一致的维度,"VALID"根据步长等参数有所变化。

kernel_in = np.array([
     [[[1, 1, 1]], [[1, 1, 1]]],
     [[[1, 1, 1]], [[1, 1, 1]]],
    [[[1, 1, 1]], [[1, 1, 1]]]])
kernel= tf.constant(kernel_in, dtype=tf.float32)
z=tf.nn.conv2d(x_input, kernel, strides=[1,1,1,1], padding='SAME')

2.2.6 结果显示

x_conv2d=np.array(z)
x_conv2d=x_conv2d.reshape(240,180,3)
#x_conv2d=np.array(x_conv2d,dtype=float)
print(x_conv2d)
plt.imshow(x_conv2d)
plt.show()

?2.2.7 不同卷积核结果显示

变换kernel

kernel_in = np.array([
     [[[-1, 0, 1]],[[-2, 0, 2]],[[-1, 0, 1]]],
     [[[-1, 0, 1]],[[-2, 0, 2]],[[-1, 0, 1]]],
    [[[-1, 0, 1]],[[-2, 0, 2]],[[-1, 0, 1]]]])

?3.完整代码

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import tensorflow as tf

data = Image.open("roses_483444865_65962cea07_m.jpg")	#返回一个PIL图像对象
plt.imshow(data)
plt.show()

x=np.array(data)
x=x/255
x=x.reshape(1,240,180,3)


image_tensor=tf.convert_to_tensor(x)
x_input = tf.cast(image_tensor,tf.float32)

print("x_in{}",x_input.shape)

kernel_in = np.array([
     [[[-1, 0, 1]],[[-2, 0, 2]],[[-1, 0, 1]]],
     [[[-1, 0, 1]],[[-2, 0, 2]],[[-1, 0, 1]]],
    [[[-1, 0, 1]],[[-2, 0, 2]],[[-1, 0, 1]]]])
kernel = tf.constant(kernel_in, dtype=tf.float32)
z=tf.nn.conv2d(x_input, kernel, strides=[1,1,1,1], padding='SAME')

x_conv2d=np.array(z)
x_conv2d=x_conv2d.reshape(240,180,3)
plt.imshow(x_conv2d)
plt.show()

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:41:36  更:2021-08-23 16:42:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:23:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码