keras
框架核心
所有model都是可调用的(All models are callable, just like layers)
可以在之前的模型基础上修改,类似迁移学习
input
keras.input 输入变量(pytorch–>variable,tensorflow–>placeHolder)
model
- Sequece单一输入输出模型 , 通过model.add添加层(类似pytorch)
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数据包含
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直到样本呢点稳定