第二讲 Python语法串讲
常用指令
- Ctrl+Alt+T 打开终端
- pwd 打印当前目录
- ls 列出当前路径下的文件和目录
- mkdir 新建目录
- cd 打开指定目录
- python 运行python解释器
- source ./venv/bin/activate 运行虚拟环境
.代表当前路径
..代表上一级路径
-代表上一次所在目录
~代表用户的home目录
vim编辑器
- vim 文件名 打开或新建文本
- 点击i进入插入模式
- Esc+:+q退出
- Esc+:+wq保存更改退出
- Esc+:+q!不保存更改退出
-
coding:utf-8兼容中文输入
turtle模块
import turtle
t = turtle.Pen()
t.forward(x)
t.backward(x)
t.left(x)
t.right(x)
t.reset()
python类中,一下划线开头是protected,两下划线开头是private。
文件读写
import pickle
#文件读
load_file=open("save.dat","rb")
load_game_data=pickle.load(load_file)
load_file.close()
#文件写
save_file=open("save.dat","wb")
pickle.dump(game_data,save_file) #game_data是一个字典
save_file.close()
第三讲 搭建神经网络
基本概念
用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型。
张量
多维数组,用“阶”表示维度。
数据类型
Tensorflow的数据类型有tf.float32、tf.int32等。
import tensorflow as tf
a = tf.constant([1.0, 2.0])
b = tf.constant([3.0, 4.0])
result = a+b
print result
计算图
搭建神经网络,不计算。
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)
神经网络的参数
指神经元线上的参数w,一般先随机生成。让w等于tf.Varible,把生成的方式写在括号里。常用的参数有;
tf.random_normal() #生成正态分布随机数
tf.truncated_normal() #生成去掉过大偏离点的正态分布随机数
tf.random_uniform() #生成均匀分布随机数
tf.zeros #生成全0数组
tf.ones #生成全1数组
tf.fill #生成全定值数组
tf.constant #生成直接给定值的数组
举例:
w=tf.Variable(tf.random_normal([2,3],stddev=2, mean=0, seed=1)),表示生成正态分布随机数,形状两行三列,标准差是 2,均值是 0,随机种子是 1。
w=tf.Variable(tf.Truncated_normal([2,3],stddev=2, mean=0, seed=1)),表示去掉偏离过大的正态分布,也就是如果随机出来的数据偏离平均值超过两个标准差,这个数据将重新生成。
w=random_uniform(shape=7,minval=0,maxval=1,dtype=tf.int32, seed=1),表示从一个均匀分布[minval maxval)中随机采样,注意定义域是左闭右开,即包含 minval,不包含 maxval。
神经网络的搭建
1、准备数据集,提取特征,作为输入喂给神经网络(Neural Network,NN)
2、搭建 NN 结构,从输入到输出(先搭建计算图,再用会话执行)
( NN 前向传播算法→计算输出)
3、大量特征数据喂给 NN,迭代优化 NN 参数
( NN 反向传播算法→优化参数训练模型)
4、使用训练好的模型预测和分类
前向传播
- 变量初始化、计算图节点运算都要用会话(with 结构)实现
with tf.Session() as sess:
sess.run()
- 变量初始化:在 sess.run 函数中用 tf.global_variables_initializer()汇总所有待优化变量。
init_op = tf.global_variables_initializer()
sess.run(init_op)
- 计算图节点运算:在 sess.run 函数中写入待运算的节点
sess.run(y)
- 用 tf.placeholder 占位,在 sess.run 函数中用 feed_dict 喂数据
喂一组数据:
x = tf.placeholder(tf.float32, shape=(1, 2))
sess.run(y, feed_dict={x: [[0.5,0.6]]})
喂多组数据:
x = tf.placeholder(tf.float32, shape=(None, 2))
sess.run(y, feed_dict={x: [[0.1,0.2],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})