新闻是有分量的

五湖四海娱乐澳&(2)

2019-05-01 10:34栏目:新闻

  • 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))

    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 模型一样。
    input_x = tf.keras.Input(shape=(72,))

    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 模型子类化