TensorFlow——卷积神经网络(三)

1、tf.layers.conv2d

import tensorflow as tf

# 设置输入形状为[1,5,5,1] 的随机矩阵
input = tf.Variable(tf.random_normal([1, 5, 5, 1]))

# 步长为 1 的卷积操作,一个选择'VALID'方式填充一个选择'SAME'方式填充
same_conv2d_s1 = tf.layers.conv2d(input, filters=1, kernel_size=3, strides=1, padding='SAME')
valid_conv2d_s1 = tf.layers.conv2d(input, filters=1, kernel_size=3, strides=1, padding='VALID')

# 步长为 2 的卷积操作,一个选择'VALID'方式填充一个选择'SAME'方式填充
same_conv2d_s2 = tf.layers.conv2d(input, filters=1, kernel_size=3, strides=2, padding='SAME')
valid_conv2d_s2 = tf.layers.conv2d(input, filters=1, kernel_size=3, strides=2, padding='VALID')

# run 运行,打印不同步长不同天秤方式下的形状变化
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print('strides == 1')
    print(valid_conv2d_s1.get_shape())
    print(same_conv2d_s1.get_shape())
    print('strides == 2')
    print(valid_conv2d_s2.get_shape())
    print(same_conv2d_s2.get_shape())

2、tf.layers.max_pooling2d

import tensorflow as tf

# 定义一个两行三列的矩阵
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.]])

# 转换形状为tf.layers.max_pool所接受的形状(batch, height, width, channels)
x = tf.reshape(x, [1, 2, 3, 1])

# 设置tf.layers.max_pool进行最大池化,一个选择'VALID'方式填充一个选择'SAME'方式填充
# 卷积核大小为2*2,卷积步长为2
valid_pad = tf.layers.max_pooling2d(x, pool_size=2, strides=2, padding='VALID')
same_pad = tf.layers.max_pooling2d(x, pool_size=2, strides=2, padding='SAME')

# run运行,打印两种不同填充方式的结果:
# 一个效果为舍弃最后一列,一个填充一行
with tf.Session() as sess:
    print('VALID:')
    print(sess.run(valid_pad))
    print('SAME:')
    print(sess.run(same_pad))

# 打印形状shape
print('x.shape:')
print(x.get_shape())
print('valid_pad.shape:')
print(valid_pad.get_shape())
print('same_pad.shape:')
print(same_pad.get_shape())

3、tf.nn.conv2d

import tensorflow as tf

# 设置输入形状为[1,5,5,1] 的随机矩阵
input = tf.Variable(tf.random_normal([1, 5, 5, 1]))

# 设置卷积核的形状,3,3 输入的channels为1,输出channels为1
# [filter_height, filter_width, in_channels, out_channels]
filter = tf.Variable(tf.random_normal([3, 3, 1, 1]))

# 步长为 1 的卷积操作,一个选择'VALID'方式填充一个选择'SAME'方式填充
same_conv2d_s1 = tf.nn.conv2d(input, filter, [1, 1, 1, 1], padding='SAME')
valid_conv2d_s1 = tf.nn.conv2d(input, filter, [1, 1, 1, 1], padding='VALID')

# 步长为 2 的卷积操作,一个选择'VALID'方式填充一个选择'SAME'方式填充
same_conv2d_s2 = tf.nn.conv2d(input, filter, [1, 2, 2, 1], padding='SAME')
valid_conv2d_s2 = tf.nn.conv2d(input, filter, [1, 2, 2, 1], padding='VALID')

# run 运行,打印不同步长不同天秤方式下的形状变化
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print('strides == 1')
    print(valid_conv2d_s1.get_shape())
    print(same_conv2d_s1.get_shape())
    print('strides == 2')
    print(valid_conv2d_s2.get_shape())
    print(same_conv2d_s2.get_shape())

4、tf.nn.max_pool

import tensorflow as tf

# 定义一个两行三列的矩阵
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.]])

# 转换形状为tf.nn.max_pool所接受的形状4-D张量。
x = tf.reshape(x, [1, 2, 3, 1])

# 设置tf.nn.max_pool进行最大池化,一个选择'VALID'方式填充一个选择'SAME'方式填充
# 卷积核大小为2*2,卷积步长为2
valid_pad = tf.nn.max_pool(x, [1, 2, 2, 1], [1, 2, 2, 1], padding='VALID')
same_pad = tf.nn.max_pool(x, [1, 2, 2, 1], [1, 2, 2, 1], padding='SAME')

# run运行,打印两种不同填充方式的结果:
# 一个效果为舍弃最后一列,一个填充一行
with tf.Session() as sess:
    print('VALID:')
    print(sess.run(valid_pad))
    print('SAME:')
    print(sess.run(same_pad))

# 打印形状shape
print('x.shape:')
print(x.get_shape())
print('valid_pad.shape:')
print(valid_pad.get_shape())
print('same_pad.shape:')
print(same_pad.get_shape())

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow中,可以通过使用L2正则化函数来实现神经网络的正则化。L2正则化通过向损失函数中添加一个正则化项,来惩罚模型的权重参数的大小。具体实现代码如下所示: ```python import tensorflow as tf # 定义输入特征和标签 x = ... y = ... # 定义神经网络结构 ... # 定义L2正则化参数 l2_regularization = tf.contrib.layers.l2_regularizer(scale=0.01) # 在全连接层中应用L2正则化 layer = tf.layers.dense(inputs=..., units=..., activation=tf.nn.relu, kernel_regularizer=l2_regularization) # 定义损失函数 loss = ... # 计算总的损失函数,包括正则化项 total_loss = loss + tf.losses.get_regularization_loss() # 定义优化器和训练操作 optimizer = tf.train.GradientDescentOptimizer(learning_rate=...) train_op = optimizer.minimize(total_loss) ``` 这段代码展示了如何在TensorFlow中应用L2正则化。首先,我们定义了输入特征和标签,并搭建了神经网络结构。然后,我们使用`tf.contrib.layers.l2_regularizer`定义了L2正则化参数,并在全连接层中应用了L2正则化。接下来,我们定义了损失函数,并计算总的损失函数,包括正则化项。最后,我们定义了优化器和训练操作,用于训练神经网络模型。 注意:以上代码仅为示例,实际使用时需要根据具体情况进行相应的调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [TensorFlow keras卷积神经网络 添加L2正则化方式](https://download.csdn.net/download/weixin_38681736/12851829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [tensorflow中的正则化](https://blog.csdn.net/qq_26449287/article/details/102753594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [简洁明了的tensorflow2.0教程——正则化操作](https://blog.csdn.net/JohnLeeK/article/details/106335532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值