# Author Qian Chenglong import tensorflow as tf import numpy as np #生成100个随机数据点 x_date=np.random.rand(100) y_date=x_date*0.1+0.2 #构造一个线性模型 k=tf.Variable(0.) b=tf.Variable(0.) y=k*x_date+b # 二次代价函数 loss=tf.reduce_mean(tf.square(y-y_date))#最小二乘 my_optimizer=tf.train.GradientDescentOptimizer(0.2)#定义一个使用梯度下降算法的训练器 train=my_optimizer.minimize(loss)#训练目标loss最小 init=tf.global_variables_initializer()#初始化变量 with tf.Session() as sess: sess.run(init) for step in range(201): sess.run(train) if step%20==0: print(step, '[k,b]:', sess.run([k, b]))
API说明:
np.random.rand(100)生成100个0~1之间的随机数
tf.square():计算元素的平方
tf.reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
计算张量的各个维度上的元素的平均值。
axis是tf.reduce_mean函数中的参数,按照函数中axis给定的维度减少input_tensor。除非keep_dims是true,否则张量的秩将在axis的每个条目中减少1。如果keep_dims为true,则缩小的维度将保留为1。 如果axis没有条目,则减少所有维度,并返回具有单个元素的张量。
参数:
- input_tensor:要减少的张量。应该有数字类型。
- axis:要减小的尺寸。如果为None(默认),则减少所有维度。必须在[-rank(input_tensor), rank(input_tensor))范围内。
- keep_dims:如果为true,则保留长度为1的缩小尺寸。
- name:操作的名称(可选)。
- reduction_indices:axis的不支持使用的名称。
tf.Variable(initializer, name):initializer是初始化参数,可以有tf.random_normal,tf.constant,tf.constant等,name就是变量的名字,用法如下:
a1 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a1') a2 = tf.Variable(tf.constant(1), name='a2') a3 = tf.Variable(tf.ones(shape=[2,3]), name='a3') !
运行session.run()可以:
- 获得你要得到的运算结果;
- 你所要运算的部分;
#qiancl 666 import tensorflow as tf import numpy as np #学习率 learning_rate=0.01 #最大训练步数 max_train_step=1000 #np.array()矩阵 train_X_date=np.array([[3.3],[4.4],[5.5],[6.71],[6.93],[4.168],[9.779],[6.182],[7.59],[2.167], [7.042],[10.791],[5.313],[7.997],[5.654],[9.27],[3.1]],dtype=np.float32) train_Y_date=np.array([[1.7],[2.76],[2.09],[3.19],[1.694],[1.573],[3.366],[2.596],[2.53],[1.221], [2.827],[3.465],[1.65],[2.904],[2.42],[2.94],[1.3]],dtype=np.float32) #样本个数 tolal_samples=train_X_date.shape[0] #输入数据占位 x=tf.placeholder(tf.float32,[None,1]) y_=tf.placeholder(tf.float32,[None,1]) #tf.random_normal([1,1])生成【1,1】的符合正态分布的随机数 w=tf.Variable(tf.random_normal([1,1]),name="weight") b=tf.Variable(tf.zeros([1]),name="bias") y=tf.matmul(x,w)+b loss=tf.reduce_sum(tf.pow(y-y_,2))/tolal_samples #创建优化器 optimizer=tf.train.GradientDescentOptimizer(learning_rate) #训练目标 train_op=optimizer.minimize(loss) #训练 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print("开始训练") for step in range(max_train_step): sess.run(train_op, feed_dict={x: train_X_date, y_: train_Y_date}) if step % 100 == 0: c = sess.run(loss, feed_dict={x: train_Y_date, y_: train_Y_date}) print("Step:%d, loss==%0.4f, w==%0.4f, b==%0.4f" % (step, c, sess.run(w), sess.run(b)))