tensorflow和keras_TensorFlow2学习二、TensorFlow Keras 构建简单网络

d4794297387e492dac9bafa53c02ba26.png

一、简介

Keras 是一个用于构建和训练深度学习模型的高阶 API。它可用于快速设计原型、高级研究和生产。

1. 导入tf.keras

import tensorflow as tffrom tensorflow.keras import layersprint(tf.__version__)print(tf.keras.__version__)

二、构建简单模型

1. 按顺序堆叠模型

序列模型各层之间是依次顺序的线性关系,模型结构通过一个列表来制定

model = tf.keras.Sequential()model.add(layers.Dense(32, activation='relu'))model.add(layers.Dense(32, activation='relu'))model.add(layers.Dense(10, activation='softmax'))

2. 网络配置

tf.keras.layers中网络配置

  • activation:设置层的激活函数。
  • kernel_initializer 和 bias_initializer:创建层权重(核和偏差)的初始化方案。此参数是一个名称或可调用对象,默认为 "Glorot uniform" 初始化器。
  • kernel_regularizer 和 bias_regularizer:应用层权重(核和偏差)的正则化方案,例如 L1 或 L2 正则化。默认情况下,系统不会应用正则化函数。

示例:

layers.Dense(32, activation='sigmoid')layers.Dense(32, activation=tf.sigmoid)layers.Dense(32, kernel_initializer='orthogonal')layers.Dense(32, kernel_initializer=tf.keras.initializers.glorot_normal)layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l2(0.01))layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l1(0.01))

三、训练和评估

1. compile用来配置模型的学习过程

model.compile(optimizer=tf.keras.optimizers.Adam(0.001), loss=tf.keras.losses.categorical_crossentropy, metrics=[tf.keras.metrics.categorical_accuracy])# Configure a model for mean-squared error regression.model.compile(optimizer=tf.train.AdamOptimizer(0.01), loss='mse', # mean squared error metrics=['mae']) # mean absolute error# Configure a model for categorical classification.model.compile(optimizer=tf.train.RMSPropOptimizer(0.01), loss=keras.losses.categorical_crossentropy, metrics=[keras.metrics.categorical_accuracy])

参数说明:

  • optimizer:训练过程的优化方法。此参数通过 tf.train 模块的优化方法的实例来指定,比如:AdamOptimizer, RMSPropOptimizer,

GradientDescentOptimizer。

  • loss:训练过程中使用的损失函数(通过最小化损失函数来训练模型)。 常见的选择包括:均方误差(mse),categorical_crossentropy和binary_crossentropy。 损失函数由名称或通过从tf.keras.losses模块传递可调用对象来指定。
  • metrics:训练过程中,监测的指标(Used to monitor training)。

指定方法:名称 或 可调用对象 from the tf.keras.metrics 模块。

2. 数据小的时候输入Numpy数据,模型使用fit训练数据:

import numpy as nptrain_x = np.random.random((1000, 72))train_y = np.random.random((1000, 10))val_x = np.random.random((200, 72))val_y = np.random.random((200, 10))model.fit(train_x, train_y, epochs=10, batch_size=100, validation_data=(val_x, val_y))

fit参数说明:

  • epochs:训练多少轮。(小批量)
  • batch_size:当传递NumPy数据时,模型将数据分成较小的批次,并在训练期间迭代这些批次。 此整数指定每个批次的大小。 请注意,如果样本总数不能被批量大小整除,则最后一批可能会更小。
  • validation_data:在对模型进行原型设计时,您希望轻松监控其在某些验证数据上的性能。 传递这个参数 - 输入和标签的元组 - 允许模型在每个epoch的末尾以传递数据的推理模式显示损失和度量。

这里根据需要也可以不加验证 validation_data。

3. 数据集api tf.data输入数据

dataset = tf.data.Dataset.from_tensor_slices((train_x, train_y))dataset = dataset.batch(32)dataset = dataset.repeat()val_dataset = tf.data.Dataset.from_tensor_slices((val_x, val_y))val_dataset = val_dataset.batch(32)val_dataset = val_dataset.repeat()model.fit(dataset, epochs=10, steps_per_epoch=30, validation_data=val_dataset, validation_steps=3)

这里,fit方法使用steps_per_epoch参数,这是模型在移动到下一个epoch之前运行的训练步数。
由于数据集生成批量数据,因此此代码段不需要batch_size。
这里的validation_data也按实际需要赋值,可以不加。

4. 评估evaluate 与 预测predict

test_x = np.random.random((1000, 72))test_y = np.random.random((1000, 10))model.evaluate(test_x, test_y, batch_size=32)test_data = tf.data.Dataset.from_tensor_slices((test_x, test_y))test_data = test_data.batch(32).repeat()model.evaluate(test_data, steps=30)# predictresult = model.predict(test_x, batch_size=32)print(result)

四、创建一个最简单的模型并训练、预测

import tensorflow as tfimport numpy as npfrom tensorflow import kerasmodel = tf.keras.Sequential( [keras.layers.Dense(units=1, input_shape=[1])] )model.compile(optimizer='sgd', loss='mean_squared_error')xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)model.fit(xs, ys, epochs=500)print(model.predict([10.0]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值