TensorFlow卷积层-函数
函数1:tf.nn.conv2d是TensorFlow里面实现卷积的函数,实际上这是搭建卷积神经网络比较核心的一个方法
函数原型:
tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None, Name=None)
参数解释:
第一个参数input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],注意这是一个4维的Tensor,要求类型为float32和float64其中之一
第二个参数filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,],要求类型与参数input相同,有一个地方需要注意,第三维卷积核的宽度,图像通道数,卷积核个数,就是参数input的第四维in_channels
第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4。strides也称为跨度,利用卷积运算对图像进行降维处理的思想是通过修改卷积核的strides(跨度)参数实现的。strdies参数的格式如下:strides = [image_batch_size_stride image_height_stride image_width_stride image_channels_strid].第一个和最后一个跨度参数通常很少修改,因为他们会在tf.nn.conv2d运算中跳过一些数据,从而不予以考虑这些数据。如果希望降低维度,可以修改image_height_stride和image_width_stride参数。strides=[1 3 3 1]的结果图下

第四个参数padding:string类型的量,只能是"SAME","VALID"其中之一,这个值决定了不同的卷积方式
- SAME:卷积输出与输入尺寸相同。这里在计算如何跨越图像时,并不考虑滤波器的尺寸。选用该设置时,缺失的像素将用0填充,卷积核扫过的像素将超过图像的像素。
- VALID:在计算卷积核在图像上如何跨越时,需要考虑滤波器的尺寸。这会使卷积核尽量不越过图像的边界。在某些情况下,边界也有可能会被填充。
第五个参数:use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true
结果返回一个Tensor,这个输出,就是我们常说的feature map
实验代码:
with tf.Session() as sess:
img_data_jpg = tf.image.decode_jpeg(image_raw_data_jpg)#按照jpeg格式对图片进行解码
img_data_jpg = tf.image.convert_image_dtype(img_data_jpg, dtype = tf.float32)#转换图片的类型位tf.float32的模型 plt.figure(1)
plt.imshow(img_data_jpg.eval())#显示图像
kernel = tf.constant([#建立一个三通道的,3层的卷积核
[
[[-1.0,-1.0,-1.0],[0.0,0.0,0.0],[1.0,1.0,1.0]],
[[-1.,0.,0.],[0.,-1.,0.],[0.,0.,-1.]],
[[0.,0.,0.],[0.,0.,0.],[0.,0.,0.]]
],
[
[[-1.,0.,0.],[0.,-1.,0.],[0.,0.,-1.]],
[[5.,0.,0.],[0.,5.,0.],[0.,0.,5.]],
[[-1.,0.,0.],[0.,-1.,0.],[0.,0.,-1.]]
],
[
[[0.,0.,0.],[0.,0.,0.],[0.,0.,0.]],
[[-1.,0.,0.],[0.,-1.,0.],[0.,0.,-1.]],
[[0.,0.,0.],[0.,0.,0.],[0.,0.,0.]]
]
],dtype = tf.float32)
input_image = tf.reshape(img_data_jpg,[1,322,426,3])#将图片格式转换为conv2d函数需要的数据输入模式
res = tf.nn.conv2d(input_image, kernel, [1,1,1,1], padding='SAME')
# activation_map = sess.run(tf.minimum(tf.nn.relu(res),255))
output_image = tf.cast(tf.reshape(res,[322,426,3]),dtype = tf.uint8)#输出图像的格式转换
plt.figure(2)
plt.imshow(output_image.eval())
sess.close()
实验结果:


原始图像 实验结果
函数2:
函数3:
TensorFlow卷积层-函数的更多相关文章
- tensorflow 卷积层
TensorFlow 卷积层 让我们看下如何在 TensorFlow 里面实现 CNN. TensorFlow 提供了 tf.nn.conv2d() 和 tf.nn.bias_add() 函数来创 ...
- TensorFlow卷积网络常用函数参数详细总结
卷积操作 tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 除去name参数用以指定该操作 ...
- tensorflow 1.0 学习:卷积层
在tf1.0中,对卷积层重新进行了封装,比原来版本的卷积层有了很大的简化. 一.旧版本(1.0以下)的卷积函数:tf.nn.conv2d conv2d( input, filter, strides, ...
- 『PyTorch x TensorFlow』第八弹_基本nn.Module层函数
『TensorFlow』网络操作API_上 『TensorFlow』网络操作API_中 『TensorFlow』网络操作API_下 之前也说过,tf 和 t 的层本质区别就是 tf 的是层函数,调用即 ...
- 82、TensorFlow教你如何构造卷积层
''' Created on 2017年4月22日 @author: weizhen ''' import tensorflow as tf #通过tf.get_variable的方式创建过滤器的权重 ...
- 81、Tensorflow实现LeNet-5模型,多层卷积层,识别mnist数据集
''' Created on 2017年4月22日 @author: weizhen ''' import os import tensorflow as tf import numpy as np ...
- tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图
tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图 因为很多 demo 都比较复杂,专门抽出这两个函数,写的 demo. 更多教程:http://www.tensorflown ...
- TensorFlow与caffe中卷积层feature map大小计算
刚刚接触Tensorflow,由于是做图像处理,因此接触比较多的还是卷及神经网络,其中会涉及到在经过卷积层或者pooling层之后,图像Feature map的大小计算,之前一直以为是与caffe相同 ...
- 『TensorFlow』卷积层、池化层详解
一.前向计算和反向传播数学过程讲解
随机推荐
- linux与window互传文件
首先我们的目标是把一个很大的文件传到linux中,所以我们先要让linux节点开启ftp服务 FTP 10.1.61.212 如果对方没有开启FTP服务,那么这个命令就不会有效果. 1.开启xftp ...
- vue -webpack.dev.config.js模拟后台数据接口
在const portfinder = require('portfinder')后面添加 const express = require('express') const app = express ...
- Confluence 6 属性的一个活动
为了启用属性,使用上面描述的方法.针对所有的用户,属性每一个访问的页面,将会在你的应用服务器中进行记录,直到你对 Confluence 进行重启.请注意每次用户访问一个链接,一个单一的属性将会被打印出 ...
- Confluence 6 删除垃圾内容
属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL. 如果你有很多垃圾用户在你的系统中创建了属性,你可以使 ...
- js获取url参数值,并解决中文乱码
<script type="text/javascript"> function GetQueryString(name) { var reg = new RegExp ...
- 单击列表行前边的checkbox被选中,再单击,取消选中
需求描述:单击datatabl的一行数据,前边的checkbox被勾选上,再次点击,选中取消,第一次碰到这种需求,不过呢也很实用,简单记录一下 代码: //html代码<tr class=&qu ...
- Linux基础实操三
实操一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cd /etc -->tar passwd * group * > 1.txt 2) 将用户信 ...
- Jmeter 谷歌插件工具blazemeter录制脚本
1.下载谷歌浏览器插件工具:blazemeter. 2.在谷歌浏览器中拖放安装扩展工具:blazemeter. 粘贴的图像828x219 13.5 KB 3.测试网站利用这个工具录制jmter脚本. ...
- K8s-Pod
一:Pod-资源对象概述 Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展P ...
- meaven
一个项目管理工具.java语言编写的,所以可以跨平台 https://mvnrepository.com/