Tensorflow2.0 全连接层

全连接层的基本使用

"""
    全连接层 -- 简单使用
"""
import tensorflow as tf

# 输入维度[4, 784]
x = tf.random.normal((4, 784))

# 网络结构 [?, 512] 输入维度确定?
net = tf.keras.layers.Dense(units=512)
out = net(x)

print("输出维度:", out.shape)
# 根据矩阵相乘规则 推断出 [784, 512]
print("全连接层维度:", net.kernel.shape, "偏置维度", net.bias.shape)


print("--" * 40)
# W和B的创建
net = tf.keras.layers.Dense(10)
# 在没有build之前调用失败
# print("全连接层维度:", net.kernel.shape, "偏置维度", net.bias.shape)
print(net.get_weights(), net.weights)

# 创建权重与偏置 [None, 4] * [?, 10]  ==> 4
net.build(input_shape=(None, 4))
print("全连接层维度:", net.kernel.shape, "偏置维度", net.bias.shape)

# 重新创建 全连接层 [None, 20] * [?, 10] ==> 20
net.build(input_shape=(None, 20))
print("全连接层维度:", net.kernel.shape, "偏置维度", net.bias.shape)

# 重复创建 [2, 4] * [?, 10] ==> 4
net.build(input_shape=(2, 4))
print(net.kernel.numpy())

# 输入维度不一致情况
net.build(input_shape=[None, 20])
print("全连接层维度:", net.kernel.shape, "偏置维度", net.bias.shape)

# 输入维度不匹配
# x = tf.random.normal([4, 12])
x = tf.random.normal([4, 20])
out = net(x)
print("输出维度:", out.shape)

在这里插入图片描述

使用函数创建全连接网络

"""
    sequnential
    连续创建模型
"""
import tensorflow as tf

# 输入数据
x = tf.random.normal([2, 3])

# [2*3] ==> [3*2] ==> [2*2] ==>[2*2]
# 组建网络
model = tf.keras.Sequential([
    tf.keras.layers.Dense(2, activation="relu"),
    tf.keras.layers.Dense(2, activation="relu"),
    tf.keras.layers.Dense(2)  # 输出层
])

# 初始化网络参数
model.build(input_shape=[None, 3])

# 显示模型结构
model.summary()

# 打印可训练变量
for p in model.trainable_variables:
    print(p.name, p.shape)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值