tensorflow学习备注1-网络结构

准备较为系统的来看下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条路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值