tensorflow入门代码分析

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

 

posted @ 2019-03-16 20:46  马帅领  阅读(212)  评论(0编辑  收藏  举报