五湖四海娱乐澳&(2)
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))
3. 训练和评估
3.1 设置训练流程
构建好模型后,通过调用 compile 方法配置该模型的学习流程:
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'))
model.compile(optimizer=tf.keras.optimizers.Adam( 0.001),
loss=tf.keras.losses.categorical_crossentropy,
metrics=[tf.keras.metrics.categorical_accuracy])
3.2 输入 Numpy 数据
importnumpy asnp
train_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))
3.3tf.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)
3.4 评估与预测
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)
# predict
result = model.predict(test_x, batch_size= 32)
print(result)
4. 构建高级模型
4.1 函数式 api
tf.keras.Sequential 模型是层的简单堆叠,无法表示任意模型。使用 Keras 函数式 API 可以构建复杂的模型拓扑,例如:
- 多输入模型,
- 多输出模型,
- 具有共享层的模型(同一层被调用多次),
- 具有非序列数据流的模型(例如,残差连接)。
使用函数式 API 构建的模型具有以下特征:
- 层实例可调用并返回张量。
- 输入张量和输出张量用于定义 tf.keras.Model 实例。
- 此模型的训练方式和 Sequential 模型一样。
hidden1 = layers.Dense( 32, activation= 'relu')(input_x)
hidden2 = layers.Dense( 16, activation= 'relu')(hidden1)
pred = layers.Dense( 10, activation= 'softmax')(hidden2)
model = tf.keras.Model(inputs=input_x, outputs=pred)
model.compile(optimizer=tf.keras.optimizers.Adam( 0.001),
loss=tf.keras.losses.categorical_crossentropy,
metrics=[ 'accuracy'])
model.fit(train_x, train_y, batch_size= 32, epochs= 5)
4.2 模型子类化