准备较为系统的来看下tensorflow,备注如下。
学习教材是tensorflow官网教程:TensorFlow Core
一开始就将eager execute?eager execute 到底有啥用?没有概念。。。
还是从张量开始看起吧
tf中的各种运算的结果还是张量,张量转换成numpy用.numpy(),
如:
a= tf.constant([0, 1, 1, 2, 3, 5, 8, 13, 21, 34])
a[0]
<tf.Tensor: shape=(), dtype=int32, numpy=0>
a[0].numpy()
0
reshape不能乱用,不改变轴的顺序,不打乱特征才有意义!
看完张量,直接跳到keras。
序贯模型,
计算一个layer的weights 个数 ,
model = keras.Sequential()
model.add(keras.Input(shape=(10, 10, 1))) # 10x10 ,1个channel
model.add(layers.Conv2D(1, 3, strides=1, activation="relu"))
param=10,1个(3*3的kernal+1个偏移量b)=10
model = keras.Sequential()
model.add(keras.Input(shape=(10, 10, 1)))
model.add(layers.Conv2D(3, 3, strides=1, activation="relu"))
param=30,3个(3*3的kernal+1个偏移量b)=30
model = keras.Sequential()
model.add(keras.Input(shape=(10, 10, 3))) #3个通道,共享一个偏移值b,
model.add(layers.Conv2D(3, 3, strides=1, activation="relu"))
param=84,3个(3*3的kernal*3个通道+1个偏移量b)=84
通道共享偏移值,一个卷积就是一个算子(过滤器),在整个图像上搜索过滤出一个特征
理解卷积,池化,全局最大池化,通过上面的计算对卷积应该有所了解,池化就是下采样。
如果把连接图输出出来就更加清楚了。
如下,这个模型,
model = keras.Sequential(
[
keras.Input(shape=input_shape),
layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(num_classes, activation="softmax"),
]
)
tensorboard中看graph如下。网络结构已经一目了然了。注意到sequential几个字的3条灰色的线,是反向传播的3条路径

本文首先介绍TensorFlow的Eager Execute模式,接着详细探讨张量概念,包括创建、转换和reshape规则。随后,通过Keras实例解析卷积层参数计算,并深入理解卷积、池化与全局池化。最后,通过Sequential模型展示网络结构和TensorBoard可视化。
2422

被折叠的 条评论
为什么被折叠?



