tensorflow2 keras学习笔记

数据分析

在对数据尽心建模之前,我们需要先对数据的基本特性进行分析

  1. 输入数据的维度 : 一维;二维(是否需要卷积操作)
  2. 输入数据在每个维度的范围是否归一化处理了
  3. 对于图片信息,则显示图片,查看信息完整性 ( matplotlib.pyplt查看 )
import matplotlib.pyplot as plt

plt.figure()
plt.imshow( image0 )
plt.colorbar()
plt.grid(False)
plt.show()

模型建模

keras Sequential API

import tensorflow as tf

####  建立模型的不同层 
mode = tf.keras.models.Sequential([
tf.keras.layers.Flatten( input_shape=(28,28) ) , 
tf.keras.layers.Dense(128,activation='relu'),
tf.keras.layers.Dropout(0.2,),
tf.keras.layers.Dense(10,activation='softmax')
])
## 每一层的含义
tf.keras.layers.Flatten   会将二维数组转化为一维数组。 

tf.keras.layers.Dense()  是全连接层,包含 神经元数量 与 激活函数
可选的 activation: 'tanh' ; 'relu' ; 'softmax' ; 'softplus' ; 'sigmoid'
activation 函数也可以不添加

tf.layers.dense(
    inputs,					#层的输入
    units,					#该层的输出维度
    activation=None,		#激活函数
    use_bias=True,			
    kernel_initializer=None,  	# 卷积核的初始化器
    bias_initializer=tf.zeros_initializer(),  # 偏置项的初始化器
    kernel_regularizer=None,    # 卷积核的正则化
    bias_regularizer=None,    	# 偏置项的正则化
    activity_regularizer=None, 
    kernel_constraint=None,
    bias_constraint=None,
    trainable=True,
    name=None,  # 层的名字
    reuse=None  # 是否重复使用参数
)
检查模型: 
model.summary()

编译模型

###### 损失函数,优化器, 指标(performance function)
model.compile( optimizer='adam', 
							loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
							metrics=['accuracy']
)

optimizer

optimizer  既可以使用已经定义好的'adam', 也可以使用keras.optimizers类
1 'adam':    keras.optimizers.Adam() 
2. 'RMSprop':
 tf.keras.optimizers.RMSprop(
    learning_rate=0.001,
    rho=0.9, 
    momentum=0.0,
    epsilon=1e-07,
    centered=False,
    name="RMSprop")
rho: 过去梯度的比例 (动量)
3. 'sgd':
tf.keras.optimizers.SGD(
    learning_rate=0.01, momentum=0.0, nesterov=False, name="SGD" )

loss

概率性loss


以下两个 label都是可以任意离散数值,数值的数量不设限制,但是 第一个是一维标签,第二个是多维标签
#BInaryCrossentropy loss:
loss_fn = tf.keras.losses.BinaryCrossentropy(
    from_logits=False,
    label_smoothing=0.0,
    axis=-1,
    reduction="auto",
    name="binary_crossentropy"
)  
from_Logits = False 表示 [0,1]输出 ; True 表示 [-inf,inf]输出

#CategoricalCrossentropy loss:
loss_fn = tf.keras.losses.CategoricalCrossentropy(
	from_logits=False,
	label_smoothing=0.0,
	axis=-1,
    reduction="auto",
    name="categorical_crossentropy"
)
多label 

离散整数标签:
#SparseCategoricalCrossentropy class
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(
    from_logits=False, reduction="auto", name="sparse_categorical_crossentropy"
)

回归性 loss

#MSE
loss_fn = tf.keras.losses.MeanSquaredError()

#MAE
loss_fn = tf.keras.losses.MeanAbsoluteError()

Metrics

# MSE metrics
mse_metrics =  tf.keras.metrics.MeanSquaredError()

rmse_metrics = tf.keras.metrics.RootMeanSquaredError(
    name="root_mean_squared_error", dtype=None)

mae_metrics = tf.keras.metrics.MeanAbsoluteError(name="mean_absolute_error", dtype=None)

模型训练

#######模型训练
model.fit( train_images, train_labels, epochs=10 )

########对训练好的模型进行 评估
test_loss, test_acc = model.evaluate( test_images, test_labels, verbose=2 )

# 参数说明
verbose  是用于 日至说明 
verbose = 0  不在标准输出流中输出日志信息,只返回 变量信息
verbose = 1  输出进度条记录
verbose = 2 没有进度条,只输出一行记录

模型预测

predictions = model.predict( test_data )

一般预测是对 一批数据进行预测,因此对单个数据进行预测时,我们需要将一个数据拓展维度
img = np.expand_dims(img,0)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值