tensorflow训练速成

成本函数中不能使用距离,而应当使用概率分布的差异,例如:交叉熵函数;而实际结果的概率分布常用one-hot,预测结果的概率分布常用softmax。
在这里插入图片描述

import tensorflow as tf
import numpy
# [First] TensorFlow图
y = tf.matmul(x,W) + b
cost = tf.reduce_mean(tf.square(y_-y))
# [Second] 用固定「学习率(learn_rate)」训练
learn_rate = 0.1
train_step =
tf.train.GradientDescentOptimizer(learn_rate).minimize(cost)
# 修改 [Second] 以调整学习率,将 'learn_rate' 设置为'tf.placeholder'
# 并将其提供给'learning_rate'参数名tf.train.GradientDescentOptimizer
learn_rate = tf.placeholder(tf.float32, shape=[])
train_step = tf.train.GradientDescentOptimizer(
    learning_rate=learn_rate).minimize(cost)

#[Third]三种batch模式
for i in range(steps):
    if datapoint_size == batch_size:
        # Batch 模式,所以选择所有数据点从 index 0 开始
        batch_start_idx = 0
    elif datapoint_size < batch_size:
        # 不可能
        raise ValueError(“datapoint_size: % d, must
        be
        greater
        than
        batch_size: % d” % (datapoint_size, batch_size))
        else:
        # 随机/mini-batch模式: 从所有可能的数据点中分批选择数据点
        batch_start_idx = (i * batch_size) % (datapoint_size — batch_size)
        batch_end_idx = batch_start_idx + batch_size
        batch_xs = all_xs[batch_start_idx:batch_end_idx]
        batch_ys = all_ys[batch_start_idx:batch_end_idx]

    # 将分批的数据点定义为xs, ys, 它们会被送入 'train_step'训练步骤
    xs = np.array(batch_xs)
    ys = np.array(batch_ys)

    # [Forth] 在每个步骤/epoch将数据送入'train_step'
    feed = {x: xs, y_: ys}
    sess.run(train_step, feed_dict=feed)
    # 修改[Forth]以更改学习率,包含送入一个'learn_rate'值,
    # 即 'initial_learn_rate'(初始学习率)除以'i' (当前epoch数)
    # 注: 这是过于简化的,仅用作示例
    feed = {x: xs, y_: ys, learn_rate: initial_learn_rate / i}
    sess.run(train_step, feed_dict=feed)

#多特征训练
x = tf.placeholder(tf.float64,[m,n])
W = tf.Variable(tf.zeros[n, 1])
y = tf.matmul(x,W)
b = tf.Variable(tf.zeros[1])
y = tf.matmul(x,W)+b

with session:
    session.run()#feed_dict获取数据```
 

猜你喜欢

转载自blog.csdn.net/Time_traveler233/article/details/106793552