学习目标:

  1. 掌握Keras构建网络的方法
  2. 理解不同的激活函数

学习内容:

对cifar10数据库(10类),做如下实验:

  1. 构建合适的全连接网络结构进行分类,并定义一个自定义的全连接层加入到网络中。
  2. 选择使用不同的激活函数,比如relu、sigmoid、softmax,并对比结果。

学习过程:

1.自定义的全连接层代码:

2.使用自定义全连接层的对象,并使用不同的激活函数的效果:

激活函数使用relu:

激活函数使用sigmoid:

激活函数使用softmax:

激活函数使用softplus:

激活函数使用softsign:

激活函数使用tanh:

激活函数使用selu:

激活函数使用elu:

激活函数使用exponential:


源码:

#导入cifar10数据集
from tensorflow.keras.datasets import cifar10
from tensorflow.keras import utils
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
y_train=utils.to_categorical(y_train,num_classes=10)
y_test=utils.to_categorical(y_test,num_classes=10)
x_train,x_test = x_train/255.0, x_test/255.0# In[1]:
# 自定义层
import tensorflow as tf
from tensorflow.keras.layers import Layerclass SimpleDense(Layer):def __init__(self, units=32):super(SimpleDense, self).__init__()self.units = unitsdef build(self, input_shape):  # 创建权重weightsself.w = self.add_weight(shape=(input_shape[-1], self.units),initializer='random_normal',trainable=True)self.b = self.add_weight(shape=(self.units,),initializer='random_normal',trainable=True)def call(self, inputs):  # 定义从输入到输出的计算过程return tf.matmul(inputs, self.w) + self.b# In[2]:
from tensorflow.keras import Sequential,Input,layers,optimizers
model = Sequential()
model.add(Input(shape=(32,32,3)))
model.add(layers.Reshape((32*32*3,)))#model.add(layers.Dense(512,activation='relu'))
#用不同的激活函数
model.add(SimpleDense(512));
#改变中间层的激活函数
model.add(layers.Activation('relu'))
#model.add(layers.Activation('sigmoid'))
#model.add(layers.Activation('softmax'))
#model.add(layers.Activation('softplus'))
#model.add(layers.Activation('softsign'))
#model.add(layers.Activation('tanh'))
#model.add(layers.Activation('selu'))
#model.add(layers.Activation('elu'))
#model.add(layers.Activation('exponential'))
#model.add(layers.Activation('selu'))
model.add(layers.Dense(10,activation='softmax')) #最后一层的激活函数不变
#学习率改为0.005
optimizer = optimizers.SGD(lr=0.005)
model.compile(optimizer,loss='categorical_crossentropy',metrics=['accuracy'])# In[3]:
#迭代8次
model.fit(x_train, y_train, batch_size=128, epochs=8)
print('\nTesting ------------------- ')
# model.load_weights('mymodel.h5')
loss, accuracy = model.evaluate(x_test, y_test)

源码下载


学习产出:

  1. 测试出来的结果是使用relu、tanh和selu这些激活函数的准确率最好,使用exponential激活函数的准确率最低;
  2. 总的来说,激活函数选择relu来测试的准确率较好。

人工智能--Keras网络构建相关推荐

  1. 人工智能--Keras网络训练

    学习目标: 掌握Keras进行训练的方法 掌握各种优化器和损失函数的特点 学习内容: 对cifar10数据库(10类),做如下实验: 对比各种优化器的结果:分别选择SGD.Adam.RMSprop等优 ...

  2. 人工智能--Keras网络评估

    学习目标: 掌握利用Keras评估神经网络性能的方法 掌握利用Keras保存与加载神经网络模型的方法 学习内容: 对cifar10数据库(10类),做如下实验: 利用回调(callbacks),设置M ...

  3. 未来人工智能自主学习网络的构建

    我们在试探人工智能自主学习网络构建方案的最优解过程中,由Norbert Wiener创立的抑制论(Cybernetics)意在模仿人类思索过程到Geoffrey Hinton提出人工智能的自主学习应构 ...

  4. 人工智能、网络空间对国家核安全的影响

    来源:知远战略与防务研究所 人工智能技术是一把双刃剑,其在网络空间和核领域的应用,一方面能够为网络安全和核安全提供技术保障:另一方面,人工智能技术也可能为对手所用,通过网络空间对核武器体系进行渗透进攻 ...

  5. tensorflow从入门到精通100讲(七)-TensorFlow房价预估使用Keras快速构建模型

    前言 这篇文章承接上一篇tensorflow从入门到精通100讲(二)-IRIS数据集应用实战 https://wenyusuran.blog.csdn.net/article/details/107 ...

  6. 3.3 keras模型构建的三种方式

    3.3 keras模型构建的三种方式 1. 使用tf.keras.Sequential按层顺序构建模型,代码示例: model = Sequential()#卷积层conv_1_1 model.add ...

  7. bert-textcnn实现多标签文本分类(基于keras+keras-bert构建)

    基于keras+keras-bert构建bert-textcnn模型实现多标签文本分类 跑别人的代码,最痛苦的莫不在于环境有错误.代码含义不懂.自己从头到尾尝试了一遍,过程很艰难,为了方便同样在学习的 ...

  8. 中医与人工智能-基于Protégé构建知识图谱

    文章目录 中医与人工智能-基于Protégé构建知识图谱 本文内容 中医数据获取 中医数据处理 Protégé介绍与基本使用 基于Protégé构建知识图谱 通过protégé创建类的层次关系 通过p ...

  9. 【转】人工智能在网络攻防领域的应用及问题分析

    算法.数据与算力是人工智能发展的三大核心要素.近些年来,在算法增强.数据爆增及算力提升等多种有利因素的驱动下,人工智能飞速发展并在各行各业得到广泛应用,在网络空间安全领域也不例外.网络攻防对抗不断演化 ...

最新文章

  1. Java锁机制学习笔记——synchronized 和 Lock
  2. MongoDB 3.0新增特性一览
  3. windows编译生成在linux上运行,在linux上编译windows 32/64 上运行的vlc
  4. html 查询表单,如何让我的HTML表单查询适用于所有表单元素?
  5. Linux进程防杀/防崩溃monitor的实现
  6. 转:26个Jquery使用小技巧(jQuery tips, tricks solutions)
  7. 由旅行商问题认识何为状态压缩
  8. jquery-添加图片,预览显示,删除预览图片,多图片上传,后端springMVC进行接收
  9. MySQL数据库页损坏怎么办,innodb_force_recovery参数帮你解决问题
  10. ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)
  11. linux安装wineQQ
  12. 深度步态识别综述(二)
  13. kubernetes 源码安装1.18.3 (7)部署cni网络
  14. 穿越火线老是卡在正在连接服务器,修复cf经常提示网络出现异常与服务器断开连接的方法...
  15. Qt之Cannot retrieve debugging output.
  16. Docker安装OnlyOffice并配置自签证书和自己的域名证书
  17. Android Gradle 7.x新版本的依赖结构变化
  18. Glove论文详解及代码分析
  19. ASP.NET WPF酒店管理系统源码 WPF开发框架源码 C#框架 界面美观
  20. UE4C++学习篇(六)--- 碰撞组件的Overlap处理

热门文章

  1. MITM Proxy环境搭建
  2. 万物云通过上市聆讯:单季营收68亿 万科是大股东
  3. Makefile使用-D选项更改宏定义,记得要clean
  4. linux下GTK图形界面取消关闭按钮和最大化按钮代码
  5. t3提示服务器sa修改,登陆提示可能是刚修改过SQL Server的超级用户(SA)的口令...
  6. linux mbr 分区表修复,备份/恢复MBR和分区表,以及无备份修复MBR及分区表错误;浅谈引导故障和分区方案...
  7. MFC多线程内存泄漏问题amp;解决方法
  8. Python单线程/多线程
  9. Python的单线程和多线程
  10. vba 定义类_excel的VBA水平分6个层级,看看你是第几级!