http://yangguang2009.github.io/2016/11/27/deeplearning/develop-neural-network-model-with-keras-step-by-step/
https://keras-cn.readthedocs.io/en/latest/
https://keras-cn.readthedocs.io/en/latest/layers/convolutional_layer/#conv2d
https://www.jianshu.com/p/6cdf330e5d0f
https://keras.io/zh/applications/
这里有很多迁移学习的模型、代码
简单实例
https://blog.csdn.net/m0_37579176/article/details/89004058
keras的这些函数、类的讲解参考keras的中文文档
## conv2d(x, kernel, strides=(1, 1), border_mode='valid', dim_ordering='th', image_shape=None, filter_shape=None)
参数:
# kernel:卷积核张量,可以是一个整数或者一个元组(3, 3),若是整数则卷积核的长宽都是此整数。
# strides:步长,长为2的tuple
# border_mode:“same”,“valid”之一的字符串,‘valid’就是padding=0,不进行填充,"same" 表示“填充后输出的宽度和高度与输入相同
# dim_ordering:“tf”和“th”之一,维度排列顺序,就是选择tensorflow还是theano
# kernel_regularizer:施加在权重上的正则项,为Regularizer对象
为什么要正则化,防止过拟合: https://blog.csdn.net/suibianshen2012/article/details/51544022
github上的kernel_regularizer源码: https://github.com/keras-team/keras/blob/master/keras/regularizers.py
# kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
本程序:kernel_initializer='he_normal',He正态分布初始化方法,参数由0均值,标准差为sqrt(2 / fan_in) 的正态分布产生,
fan_in为权值张量的输入单元数
## keras.layers.convolutional.MaxPooling2D(pool_size=(2, 2), strides=None, border_mode='valid', dim_ordering='th')
参数
# pool_size:长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,如取(2,2)将使图片在两个维度上均变为原长的一半
# strides:长为2的整数tuple,或者None,步长值。
# border_mode:‘valid’或者‘same’
# dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第3个位置。
例如128*128的三通道彩色图片,在‘th’模式中input_shape应写为(3,128,128),而在‘tf’模式中应写为(128,128,3),
注意这里3出现在第0个位置,因为input_shape不包含样本数的维度,在其内部实现中,实际上是(None,3,128,128)和(None,128,128,3)。
默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。
## model.add(Flatten())
Flatten就是把张量展平,原来是矩阵,现在展平为一维的数组
https://docs.floydhub.com/guides/environments/
https://blog.csdn.net/levy_cui/article/details/81003618
https://blog.csdn.net/PNAN222/article/details/80050887
model.fit()的参数:
https://www.jianshu.com/p/159a9ac413fa
verbose = 0 为不在标准输出流输出日志信息
verbose = 1 为输出进度条记录
verbose = 2 为每个epoch输出一行记录
from keras import backend as K
K.epsilon()==1e-07,相当于python中的零
使用keras的to_categorical,np.argmax
https://blog.csdn.net/yangzm/article/details/82622637
https://blog.csdn.net/JustKian/article/details/82745173
或者使用sklearn的fit和transform:
https://blog.csdn.net/zhuqiuhui/article/details/50525646
https://blog.csdn.net/u010916338/article/details/83780582
对sklearn的one-hot编码的原理探究,有时间再看:
https://www.cnblogs.com/Jerry-home/p/9824085.html
https://segmentfault.com/a/1190000019458973
原文:https://blog.csdn.net/weixin_44102198/article/details/90114386
今天在load weights值的时候出现了问题,就是因为自己把这几个文件保存的内容记混乱了,所以在这里要梳理一下。
1.HDF5格式文件保存的是 : Model weights
keras代码:keras.models.Model.load_weights(filepath='hdf5文件路径')
2.H5 格式文件保存的是: Model stucture 和 Model weights
keras代码:keras.models.load_model('h5文件路径', compile=False)
3.JSON 和 YAML 格式问价保存的是: Model stucture
keras把你预加载的模型(比如VGG、Xception等)放在这个隐藏路径里:C:\Users\Administrator\.keras\models
https://www.jianshu.com/p/372e8dcf7080
用ModelCheckpoint或save_model、save、model_to_json、model_to_yaml
加载整个模型:
model = keras.models.load_model("./model/model1.h5")
ends = model.predict(x)
python – Keras:如何保存模型并继续培训?直接看到最佳答案那一栏
https://codeday.me/bug/20180921/257413.html
keras用model.load_weights加载模型by_name参数的用法,用于迁移学习
http://neyzoter.cn/2018/07/14/Keras-Models-Save-Load-Continue-etel/#2%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE
0.学习TensorFlow,打印输出tensor的值
https://blog.csdn.net/helei001/article/details/51750910
1.tensorflow的基本数据类型及转换:
(已学习:tf.constant(),tf.convert_to_tensor(),tf.zero(),tf.one(),tf.expand_dims,tf.squeeze())
https://www.cnblogs.com/chenhuabin/p/11561633.html#_label2
2.最全Tensorflow2.0 入门教程持续更新
(已学习:第一个链接,kersa快速入门)
https://zhuanlan.zhihu.com/p/59507137
3.tensorflow代码中tf.app.run()什么意思,从main函数进入程序
https://blog.csdn.net/fxjzzyo/article/details/80466321
4.tensorflow学习笔记(十七):name&variable scope
总结:
使用tf.Variable()的时候,tf.name_scope()和tf.variable_scope() 都会给 Variable 和 op 的 name属性加上前缀。
使用tf.get_variable()的时候,tf.name_scope()就不会给 tf.get_variable()创建出来的Variable加前缀。但是 tf.Variable() 创建出来的就会受到 name_scope 的影响.
https://blog.csdn.net/u012436149/article/details/53081454
5.TensorFlow中CNN的两种padding方式“SAME”和“VALID”
基本原理:
https://blog.csdn.net/wuzqChom/article/details/74785643
实战分析:
【TensorFlow】一文弄懂CNN中的padding参数
6.Tensorflow中padding的两种类型SAME和VALID的源码:
https://blog.csdn.net/jiandanjinxin/article/details/77519629
7.tf.app.run() 会加载tf.app.flags来运行main函数
https://blog.csdn.net/helei001/article/details/51859423
8.tf.app.flags 可以从控制台命令行输入参数
https://blog.csdn.net/dcrmg/article/details/79658725
9.技术分享|TensorFlow初学者在使用过程中可能遇到的问题及解决办法
简介:非常好的技术分享,讲了tensorflow分布式运行的一些内容、和一些数据维度不匹配的错误、tf.app.flags。
https://mp.weixin.qq.com/s?__biz=MzI2NzI2OTExNA%3D%3D&mid=2247483960&idx=1&sn=a01fb83443c1a6537f3c9aa5801085f2&chksm=ea8024adddf7adbb66de772f394eaec1fcdf6a81598ae6a8798c060e8938361a387d35d8a103
10.tf.train.Supervisor()
简介:用来保存ckpt模型文件、Summary,
https://www.jianshu.com/p/7490ebfa3de8
supervisor可以看做一个工具,或者说是对原生tensorflow的一层封装,目的主要是通过定期save的方法增强训练健壮性。
为了能够在停机或崩溃后恢复训练,训练过程必须周期保存检查点。在重新启动时,它必须查找最新的检查点,并在恢复训练之前加载它。
tf.train.Supervisor()的一个参数:save_model_secs: 每个checkpoint之间的秒数。默认为600,即10分钟。
https://blog.csdn.net/ei1990/article/details/77948001
sv = tf.train.Supervisor(logdir=log_path, graph=model.graph) # logdir用来保存checkpoint和summary
官网:
https://mxnet.incubator.apache.org/versions/master/api/python/gluon/nn.html?highlight=ceil_mode#mxnet.gluon.nn.MaxPool2D
MXNet官方文档中文版教程(8):使用预训练模型预测(青青韶华)
https://blog.csdn.net/qq_36165459/article/details/78394434
网友翻译,MXNet官方文档教程(7):训练和推断模型:(Catalyst_ZX)
https://blog.csdn.net/Catalyst_ZX/article/details/60875193
mxnet(gluon)学习之路-使用HybridBlock构建网络
https://blog.csdn.net/Iriving_shu/article/details/81416891
【MXNet】(二十四):实现Batch Normalization
https://blog.csdn.net/heiheiya/article/details/87722121
mxnet框架下学梵高画画
https://blog.csdn.net/chenzhi1992/article/details/53401287
安装mxnet-cu90是GPU版本,安装mxnet是CPU版本:
https://blog.csdn.net/marleylee/article/details/81988365
英伟达支持各种深度学习框架的Cudnn版本
https://developer.nvidia.com/deep-learning-frameworks
解析mxnet.ndarray.reshape的用法,和numpy.reshape很像
https://blog.csdn.net/xiaotao_1/article/details/79630968
学习import mxnet.ndarray as nd
1.
ERROR1:ValueError: setting an array element with a sequence.
在创建NDarray时候没有让所有的元素放在一个中括号里
错误示例:a1 = nd.array([[1,1,2],[2,3,3]],[[4,3,3],[5,4,4]])
正确示例:a1 = nd.array([[[1,1,2],[2,3,3]],[[4,3,3],[5,4,4]]])
2.
a1 = nd.array([[[1,1,2],[2,3,3]],[[4,3,3],[5,4,4]]])
a1 = a1.asnumpy() # 将a1转化成numpy数组
img为numpy.ndarray类型
array = mx.nd.array(img) # 将img转换成mxnet.ndarray类型
3.
【深度学习】MXNet基本数据结构NDArray常用操作
https://blog.csdn.net/qq_28869927/article/details/84946472
参考:pytorch,torch,torchvision的gpu版本安装避坑
或者参考下面这个,
参考:https://blog.csdn.net/weixin_41010198/article/details/103107083
pip install torch -f https://download.pytorch.org/whl/torch_stable.html