Tensorflow 神经网络训练加速

如何加快收敛速度?

  1. 使用GPU
    越是复杂的网络,GPU的性能提高也明显。使用GPU是最有效的提高收敛速度的方法

  2. 使用model.fit()
    使用tensorflow提供的model.fit()训练速度非常快,比自己编写的算法要快很多。凡是能够直接应用的,一定使用tensorflow提供的函数与方法。

  3. 使用@tf.function
    如果必须要使用定制化的算法,可以在关键的地方使用@tf.function,大概可以提高1倍的训练速度。@tf.function 一般修饰梯度带所在的函数,也可以是计算损失函数。比如:

@tf.function
def train_ae(x):
    with tf.GradientTape() as tape:
        x_rec_logits = model(x)
        # 把每个像素点当成一个二分类的问题;
        rec_loss = tf.losses.binary_crossentropy(x, x_rec_logits, from_logits=True)
        # rec_loss = tf.losses.MSE(x, x_rec_logits)
        rec_loss = tf.reduce_mean(rec_loss)

    grads = tape.gradient(rec_loss, model.trainable_variables)
    optimizer.apply_gradients(zip(grads, model.trainable_variables))
    return rec_loss

你可能感兴趣的:(TensorFlow,tensorflow,机器学习,深度学习)