python学习笔记

深度学习中的epochs,batch_size,iterations详解

当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch

在不能将数据一次性通过神经网络的时候,就需要将数据集分成几个 batch

iterations是 batch 需要完成一个 epoch 的次数

 

训练集有1000个样本,batchsize=10,那么:

训练完整个样本集需要:

100次iteration,1次epoch。

具体的计算公式为:

one epoch = numbers of iterations = N = 训练样本的数量/batch_size

np.random.choice的用法

numpy.random.choice(asize=Nonereplace=Truep=None)

参数意思分别 是从a 中以概率P,随机选择3, p没有指定的时候相当于是一致的分布

Python 中的 if __name__ == '__main__' 该如何理解?

我们简单的理解就是: 如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行

彻底理解Python中的yield

https://www.jianshu.com/p/d09778f4e055

tensorflow 动态分配内存以及设置使用那块gpu的方法

在使用 keras 时候会出现总是占满 GPU 显存的情况,可以通过重设 backend 的 GPU 占用情况来进行调节

 

import tensorflow as tf

from keras.backend.tensorflow_backend

import set_session

config = tf.ConfigProto()

config.gpu_options.per_process_gpu_memory_fraction = 0.3

set_session(tf.Session(config=config))

关于Keras模型

https://www.cnblogs.com/q735613050/p/8227446.html

 

Keras 有两种类型的模型,序列模型(Sequential)和 函数式模(Model),函数式模型应用更为广泛,序列模型是函数式模型的一种特殊情况。函数式模型也叫通用模型。

Sequential 序列模型

序列模型是函数式模型的简略版(即序列模型是通用模型的一个子类),为最简单的线性、从头到尾的结构顺序,不分叉。即这种模型各层之间是依次顺序的线性关系,在第 kk 层和 k+1k+1 层之间可以加上各种元素来构造神经网络。这些元素可以通过一个列表来制定,然后作为参数传递给序列模型来生成相应的模型。

Sequential模型的基本组件:

  1. model.add,添加层;
  2. model.compile,模型训练的 BP 模式设置;
  3. model.fit,模型训练参数设置 + 训练;
  4. 模型评估
  5. 模型预测

1 add:添加层

序贯模型是多个网络层的线性堆叠,也就是“一条路走到黑”。

可以通过向 Sequential 模型传递一个 layer 的 list 来构造该模型:

 

from keras.models import Sequential

from keras.layers import Dense, Activation

model = Sequential([Dense(32, input_shape=(784,)),

                    Activation('relu'),

                    Dense(10),

                    Activation('softmax'),

                   ])

也可以通过 .add() 方法一个个的将 layer 加入模型中:

model = Sequential()

model.add(Dense(32, input_shape=(784,)))

model.add(Activation('relu'))

model.add(Dense(10))

model.add(Activation('softmax'))

2 指定输入数据的 shape

模型需要知道输入数据的 shape,因此,Sequential 的第一层需要接受一个关于输入数据 shape 的参数,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每个层都指定这个参数。

 

3 编译

在训练模型之前,我们需要通过 compile 来对学习过程进行配置。

compile接收三个参数:

 

优化器 optimizer:该参数可指定为已预定义的优化器名,如 rmsprop、adagrad ,或一个Optimizer 类的对象,详情见优化器optimizers。

 

损失函数 loss:该参数为模型试图最小化的目标函数,它可为预定义的损失函数名,如 categorical_crossentropy、mse,也可以为一个自定义损失函数。详情见损失函数loss。

 

指标列表 metrics:对分类问题,我们一般将该列表设置为 metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数。指标函数应该返回单个张量,或一个完成 metric_name - > metric_value映射的字典。

你可能感兴趣的:(Python)