import tensorflow as tf import numpy as np # 使用 NumPy 生成数据(phony data), 总共 100 个点. x_data = np.float32(np.random.rand(2, 100)) # 随机产生2行100列的数据 y_data = np.dot([0.100, 0.200], x_data) + 0.300 # np.dot 返回的是两个矩阵的乘积,相当于tensorflow.matmul(a,b) # 构造一个线性模型 # # tf.zeros( # shape, # dtype=tf.float32, # name=None # ) # shape代表多少维的数组,例如:tf.zeros([1]):一维的数组中放入一个元素,每个元素的值维0,数值类型是dtype,默认是float32,该操作的名称(可选) # tf.random_uniform( # uniform:均匀的,一致的 # shape, # minval=0, # maxval=None, # dtype=tf.float32, # seed=None, # name=None # ) # 输出从均匀分布中输出随机值。shape是数据的形状,例如:[1,2]表示两个维度1*2个元素的矩阵。[2,3,4]表示三维的数据2*3*4个元素。 # minval代表最小值(包括),maxval代表最大值(不包括),dtype是数据元素的类型,默认是float32 # seed为随机的种子,相同的seed随机数相同,name为该操作的名字(可选),默认的没有名字 # # 函数:tf.matmul a*b矩阵相乘的值,a和b的类型必须相同,这里都是float32.且a和b的秩都大于等于2 # matmul( # a, # b, # transpose_a=False, # 如果true,a乘法之前转置 # transpose_b=False, # 如果true,a乘法之前转置 # adjoint_a=False, # 如果true,a在乘法之前共轭和转置 # adjoint_b=False, # 如果ture,b在乘法之前共轭和转置 # a_is_sparse=False, # 如果true,a被视为稀疏矩阵,矩阵中含0元素比较多的时候,选择此优化. # b_is_sparse=False, # 如果true,b被视为稀疏矩阵,矩阵中含0元素比较多的时候,选择此优化. # name=None # ) b = tf.Variable(tf.zeros([1])) # Varible:变量 W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0)) # w的shape是:1*2,元素范围[-1.0, 1.0) y = tf.matmul(W, x_data) + b # x_data的shape是:2*100, # 最小化方差 loss = tf.reduce_mean(tf.square(y - y_data)) # 方差 optimizer = tf.train.GradientDescentOptimizer(0.5) # 优化器,优化的粒度 train = optimizer.minimize(loss) # 开始优化的形式 # 初始化变量 init = tf.initialize_all_variables() # 启动图 (graph) sess = tf.Session() # 开启Session sess.run(init) # 初始化所有变量 # 拟合平面 for step in range(0, 220): # 训练多少次,这里训练1000次 sess.run(train) # 反复优化减小loss值 if step % 20 == 0: # 每20次输出一次结果 print(step, sess.run(W), sess.run(b))