keras和sklearn深度学习框架

2022-05-06 15:21:00 浏览数 (1)

keras

框架核心

所有model都是可调用的(All models are callable, just like layers)

可以在之前的模型基础上修改,类似迁移学习

input

keras.input 输入变量(pytorch–>variable,tensorflow–>placeHolder)

model
  • Sequece单一输入输出模型 , 通过model.add添加层(类似pytorch)
代码语言:javascript复制
model = Sequential()
model.add(Conv2D(32, (5,5), activation='relu', input_shape=[28, 28, 1]))
model.add(Conv2D(64, (5,5), activation='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
  • 函数式模型,Model构造,模型中不包含样本维度,输入fit数据包含
代码语言:javascript复制
tf.keras.model(input,output)

y=f(x)单调函数模型,DNN可拟合任意函数(不包含分段函数和非单调函数f(x,y)=0) 残差网络:f(x) x输入

model.compile设置训练参数,单独赋值sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)或 model.optimizer.lr.assign 默认学习率0.01 设置准确率metrics=[‘accuracy’]

model.fit训练 loss,accuracy = model.evaluate模型评估计算准确率 model.predict预测

model.summary 打印模型结构 model.get_config

layer

layer.dense 线性变换 激活(全连接层),默认relu layer.concatenate合并两输入个张量 layer.lambda添加表达式层 lambda x:x**2

处理梯度消失(loss保持不变,输出全是0)和爆炸(loss出现nan):

梯度爆炸,BN、L1、L2正则化,减小整体数值 https://blog.csdn.net/qq_32002253/article/details/89109214 https://blog.csdn.net/qq_29462849/article/details/83068421

sklearn

cluster 聚类分析

kmeans 分类

  • 随机选取k个样本点
  • 计算所有点到k个样本点的距离,选取最近的点分类
  • 计算分类的重心点,重覆2、3步骤,直到样本点稳定

means-shift 目标跟踪

  • 随机选取样本点
  • 选取样本点到半径R范围内的点为向量(半径内所有点分类 1),所有向量相加移动样本点,如果两个样本点相遇则合并
  • 重复步骤2直到样本呢点稳定
svm线性可分类

0 人点赞