1 基本概念
- 统计学方法,利用已知数据,得出模型,利用模型预测结果。
- 三要素:数据,算法,算力
- 输入 -> 权值 -> 运算 -> 输出
- 联系数据预测和离散数据的分类
2 tensor张量:多维数组(列表)
维数 | 阶 | 名字 | 例子 |
---|---|---|---|
0 | 0 | 标量 | |
1 | 1 | 向量 | 【】 |
2 | 2 | 矩阵 | 【【】,【】】 |
3 session会话:执行计算图中的结点运算
import tensorflow as tf
x = tf.constant([[1.0, 2.0]])
w = tf.constant([[3.0], [4.0]])
y = tf.matmul(x, w)
print(y)
with tf.Session() as sess:
print(sess.run(y))
4 参数:变量权重
w = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))
- [2,3]:产生一个2*3的矩阵
- stddev:标准差
- mean:均值
- seed:随机种子
【注意】:tf.random_normal()函数可以被tf.truncated_normal()函数和tf.random_uniform()替换
5 实现过程
- 准备数据集,提取特征
- 搭建nn结构,从输入到输出(先搭建计算图)
- 大量特征数据集喂给nn,迭代优化nn参数
- 使用训练好的模型预测和分类
6 代码模板
# coding:utf-8
import tensorflow as tf
import numpy as np
BATCH_SIZE = 8
seed = 23455
rng = np.random.RandomState(seed)
X = rng.rand(32,2)
Y = [[int(x0 + x1 < 1)] for (x0, x1) in X]
print('X:\n', X)
print('Y:\n', Y)
x = tf.placeholder(tf.float32, shape=(None, 2))
y_ = tf.placeholder(tf.float32, shape=(None, 1))
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)
loss = tf.reduce_mean(tf.square(y - y_))
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
# train_step = tf.train.MomentumOptimizer(0.001, 0.9).minimize(loss)
# train_step = tf.train.AdamOptimizer(0.001).minimize(loss)
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
print('w1:\n', sess.run(w1))
print('\n')
print('w2:\n', sess.run(w2))
print('\n')
STEPS = 3000
for i in range(STEPS):
start = (i * BATCH_SIZE) % 32
end = start + BATCH_SIZE
sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
if i % 1000 == 0:
total_loss = sess.run(loss, feed_dict={x: X, y_: Y})
print('After %d training step(s), loss on all data is %g' % (i, total_loss))
print('\n')
print('w1:\n', sess.run(w1))
print('\n')
print('w2:\n', sess.run(w2))