简单CNN卷积神经网络搭建 TensorFlow

        以下文章中用到的的卷积网络仅用于分类操作

        已知有训练集X_training、Y_training,和验证集X_test、Y_test。其中Y_training与Y_test两个标签数据均为one-hot类型数据即【0,0,1,0,0】这种数据。如果你的标签数据是int型整数的话,可以用如下代码改写为one-hot类型。(比如在一个分类任务中一共有5种类别,其中类别3将会转换为【0,0,1,0,0】)

Y_train = tf.keras.utils.to_categorical(Y_train, num)#num为类别总数
Y_test = tf.keras.utils.to_categorical(Y_test, num)

        下面我们来创建一个简单的CNN网络,该网络结构如下图所示:

        模型的代码实现:

input_features=tf.keras.layers.Conv2D(filters=64,
                                      kernel_size=[4,4],
                                      padding='same',
                                      activation=tf.nn.relu)(input_1)#input_1为该层输入,input_features为该层输出,切记不要弄混

input_features= tf.keras.layers.MaxPool2D(pool_size=[2,2],strides=2)

input_features=tf.keras.layers.Conv2D(filters=64,
                                      kernel_size=[4,4],
                                      padding='same',
                                      activation=tf.nn.relu)(input_1)

input_features= tf.keras.layers.MaxPool2D(pool_size=[2,2],strides=2)

output = tf.keras.layers.Dense(num,name="output", activation='softmax')(input_features)#num为类别总数

        如此网络便构建完成。

        下面进行模型定义:

model = tf.keras.Model(
        inputs=input1,
        outputs=output)

        这一步相当于把上方自己写的模型封装进model中,当模型定义完成后,对模型的后续操作只需要调用变量model即可。

        模型编译:

optimizer=tf.keras.optimizers.Adam(learning_rate=0.01)#定义学习率
model.compile(optimizer=optimizer,#导入上面的学习率
              loss='categorical_crossentropy',#选择损失函数
              metrics=['accuracy']#在训练时输出对训练集的精确度(可删)
             )

         模型训练并输出结果:

model.fit(
        X_training,
        Y_train,#导入训练集
        epochs=2000,#迭代次数设置为2000
        batch_size=32,#每次送入32个数据进行训练(如果少于32则会直接带入当前全部)
        validation_data=(X_test, Y_test),#当训练完成后直接对验证集进行测试并输出结果
        shuffle=True#打乱数据集顺序,防止过拟合
        )

        总的来说用TensorFlow创建简单CNN网络还是比较简单的,但是在输入数据时要注意数据的shape,如果报错的话可以用numpy.expand_dims()函数将输入数据的形状更改为模型需要的形状。总之多调试,多研究报错信息就可以跑通程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值