使用 TensorFlow 实现 CNN
Implementing CNN with tensorflow
我是卷积神经网络和 Tensorflow 的新手,我需要实现一个带有更多参数的转换层:
转化。 layer1: filter=11, channel=64, stride=4, Relu.
API 如下:
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)
我明白,什么是步幅,在我的情况下应该是 [1, 4, 4, 1]。但我不明白,我应该如何传递过滤器参数和填充。
有人可以帮忙吗?
首先,您需要创建一个过滤器变量:
W = tf.Variable(tf.truncated_normal(shape = [11, 11, 3, 64], stddev = 0.1), tf.float32)
形状参数的前两个字段代表滤波器大小,第三个代表输入通道数(我猜你的图像有 3 个通道),第四个代表输出通道数。
现在卷积层的输出可以计算如下:
conv1 = tf.nn.conv2d(input, W, strides = [1, 4, 4, 1], padding = 'SAME')
,其中 padding = 'SAME'
代表零填充,因此图像的大小保持不变,输入的大小应为 [batch, size1, size2, 3].
ReLU 应用非常简单:
conv1 = tf.nn.relu(conv1)
我是卷积神经网络和 Tensorflow 的新手,我需要实现一个带有更多参数的转换层:
转化。 layer1: filter=11, channel=64, stride=4, Relu.
API 如下:
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)
我明白,什么是步幅,在我的情况下应该是 [1, 4, 4, 1]。但我不明白,我应该如何传递过滤器参数和填充。 有人可以帮忙吗?
首先,您需要创建一个过滤器变量:
W = tf.Variable(tf.truncated_normal(shape = [11, 11, 3, 64], stddev = 0.1), tf.float32)
形状参数的前两个字段代表滤波器大小,第三个代表输入通道数(我猜你的图像有 3 个通道),第四个代表输出通道数。
现在卷积层的输出可以计算如下:
conv1 = tf.nn.conv2d(input, W, strides = [1, 4, 4, 1], padding = 'SAME')
,其中 padding = 'SAME'
代表零填充,因此图像的大小保持不变,输入的大小应为 [batch, size1, size2, 3].
ReLU 应用非常简单:
conv1 = tf.nn.relu(conv1)