-
Notifications
You must be signed in to change notification settings - Fork 3.3k
/
basic.py
154 lines (90 loc) · 3.56 KB
/
basic.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
"""
整理自莫烦大神的博客:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/
github:
"""
"""
TensorFlow是采用数据流图(data flow graphs)来计算, 所以首先我们得创建一个数据流流图,
然后再将我们的数据(数据以张量(tensor)的形式存在)放在数据流图中计算. 节点(Nodes)在图
中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor).
训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是TensorFlow名字的由来.
Tensor 张量意义
张量(Tensor):
张量有多种. 零阶张量为 纯量或标量 (scalar) 也就是一个数值. 比如 [1]
一阶张量为 向量 (vector), 比如 一维的 [1, 2, 3]
二阶张量为 矩阵 (matrix), 比如 二维的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
以此类推, 还有 三阶 三维的 …
"""
"""先来看一个例子"""
import tensorflow as tf
import numpy as np
#tensorflow中大部分数据是float32
#create real data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
### create tensorflow structure start ###
#定义变量
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))
#如何计算预测值
y = Weights * x_data + biases
# loss function
loss = tf.reduce_mean(tf.square(y-y_data))
#梯度下降优化器,定义learning rate
optimizer = tf.train.GradientDescentOptimizer(0.5)
#训练目标是loss最小化
train = optimizer.minimize(loss)
#初始化变量,即初始化 Weights 和 biases
init = tf.global_variables_initializer()
#创建session,进行参数初始化
sess = tf.Session()
sess.run(init)
#开始训练200步,每隔20步输出一下两个参数
for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step,sess.run(Weights),sess.run(biases))
### create tensorflow structure end ###
"""Tensorflow的Session,对话控制模块,可以用sesison.run来运行框架中的某一个
点的功能"""
import tensorflow as tf
matrix1 = tf.constant([[3,3]])
matrix2 = tf.constant([[2],[2]])
product = tf.matmul(matrix1,matrix2)
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()
with tf.Session() as sess:
result2 = sess.run(product)
print(result2)
"""TF variable"""
import tensorflow as tf
#定义变量,给定初始值和name
state = tf.Variable(0,name="counter")
#counter:0
print(state.name)
one = tf.constant(1)
new_value = tf.add(state,one)
update = tf.assign(state,new_value)
#这里只是定义,必须用session.run来执行
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for _ in range(3):
sess.run(update)
print(sess.run(state))
"""TF placeholder
placeholder 是 Tensorflow 中的占位符,暂时储存变量.
Tensorflow 如果想要从外部传入data, 那就需要用到 tf.placeholder(), 然后以这种形式传输数据 sess.run(***, feed_dict={input: **}).
"""
import tensorflow as tf
input1 = tf.placeholder(dtype=tf.float32)
input2 = tf.placeholder(dtype=tf.float32)
output = tf.multiply(input1,input2)
with tf.Session() as sess:
print(sess.run(output,feed_dict={input1:[3.],input2:[5]}))
"""激励函数
激励函数运行时激活神经网络中某一部分神经元,将激活信息向后传入下一层的神经系统。激励函数的实质是非线性方程。
Tensorflow 的神经网络 里面处理较为复杂的问题时都会需要运用激励函数 activation function
"""
import tensorflow as tf