AI学习笔记Word格式文档下载.docx
- 文档编号:15329822
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:33
- 大小:2.36MB
AI学习笔记Word格式文档下载.docx
《AI学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《AI学习笔记Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
W的偏导数值d
正数
负数
说明
W增大,Cost增大
W增大,Cost减小
对下一步W值的要求
减小
增大
对W的变换
W–d*step_size
例如有3组样本:
X
Y
1
2
3
下面的例子是对线性回归做的验证:
对W的偏导数=2W*x*x+2b*x–2x*y,对b的偏导数=2b–2y+2W*x
b
W
x
y
每一组对b求偏导数
对b的偏导数
每一组对W求偏导数
对W的偏导数
下一个b
下一个w
0.01164202
0.994879
0.01304134
0.00279864
0.00559728
-0.00744406
0.0028
-0.02233218
-0.0012
0.011614034
0.994891
0.01161404
0.01301008
0.00279208
0.00558416
-0.00742592
0.00279
-0.02227776
0.011586119
0.994903
……
注:
对b或W的偏导,是对每组偏导值的平均数(?
)。
其他的优化方法
除了梯度下降之外,还有:
tf.train.AdadeltaOptimizer
tf.train.AdagradOptimizer
tf.train.AdagradDAOptimizer
tf.train.MomentumOptimizer
tf.train.AdamOptimizer(这个似乎在神经网络中比较常用)
tf.train.FtrlOptimizer
tf.train.ProximalGradientDescentOptimizer
tf.train.ProximalAdagradOptimizer
tf.train.RMSPropOptimizer
LinearRegression线性回归
用于预测。
对一个样本来说,输入为矢量,预测值为标量。
预测函数
CostFunction
Y=WX
实际计算中,取,。
因为Cost对W的偏导数为W*X*X–X*Y=X*(W*X-Y)。
实例
在此例中,一个向量或者说一个1*n的矩阵表示一个样本,行中的各个分类是样本的各个特征。
importtensorflowastf
#XandYdata
x_train=[1,2,3]
y_train=[1,2,3]
W=tf.Variable(tf.random_normal([1]),name='
weight'
)
b=tf.Variable(tf.random_normal([1]),name='
bias'
#OurhypothesisXW+b
hypothesis=x_train*W+b
#cost/lossfunction
cost=tf.reduce_mean(tf.square(hypothesis-y_train))
#Minimize
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.01)
train=optimizer.minimize(cost)
#Launchthegraphinasession.
sess=tf.Session()
#Initializesglobalvariablesinthegraph.
sess.run(tf.global_variables_initializer())
#Fittheline
forstepinrange(2001):
sess.run(train)
ifstep%20==0:
print(step,sess.run(cost),sess.run(W),sess.run(b))
LogisticRegression(Binaryclassification)
逻辑回归,用于0/1分类。
即预测结果只有“是”和“否”两个结果。
Sigmoidfunction:
逻辑回归就是对样本先做线性变换(WX+b),转换成一个标量,在对其使用Sigmoid函数:
(缺少了b)
Cost函数:
W的变化仍然采用梯度下降算法:
对于要预测的样本,用训练得到的W和b,对样本进行线性变换,再用Sigmoid函数算出一个值,若这个值>
0.5则分类(或预测)的结果判为1,否则(<
=0.5)为0。
x_data=[[1,2],[2,3],[3,1],[4,3],[5,3],[6,2]]
y_data=[[0],[0],[0],[1],[1],[1]]
#placeholdersforatensorthatwillbealwaysfed.
#Here
None
meansthatadimensioncanbeofanylength.
X=tf.placeholder(tf.float32,shape=[None,2])
Y=tf.placeholder(tf.float32,shape=[None,1])
W=tf.Variable(tf.random_normal([2,1]),name='
#Hypothesisusingsigmoid:
tf.div(1.,1.+tf.exp(tf.matmul(X,W)))
#matmul应该是matrixmultiplication(矩阵相乘)
#sigmoid函数的参数是一个一维数组(向量),对数组的每个元素进行sigmoid运算
hypothesis=tf.sigmoid(tf.matmul(X,W)+b)
cost=-tf.reduce_mean(Y*tf.log(hypothesis)+(1-Y)*tf.log(1-hypothesis))
train=tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
#Accuracycomputation
#Trueifhypothesis>
0.5elseFalse
predicted=tf.cast(hypothesis>
0.5,dtype=tf.float32)
accuracy=tf.reduce_mean(tf.cast(tf.equal(predicted,Y),dtype=tf.float32))
#Launchgraph
withtf.Session()assess:
#InitializeTensorFlowvariables
sess.run(tf.global_variables_initializer())
forstepinrange(10001):
cost_val,_=sess.run([cost,train],feed_dict={X:
x_data,Y:
y_data})
ifstep%200==0:
print(step,cost_val)
#Accuracyreport
h,c,a=sess.run([hypothesis,predicted,accuracy],feed_dict={X:
print("
\nHypothesis:
"
h,"
\nCorrect(Y):
c,"
\nAccuracy:
a)
SoftmaxClassification
用于多分类问题,即样本有多个,分类的结果也有多种,不仅是0和1。
比如识别手写数字0—9,有10中分类几个。
Softmax函数:
即对各个样本先进行线性变换,再使用Softmax函数。
Costfunction:
crossentropy(交叉熵)。
对线性变换的参数的变化仍使用梯度下降法:
hypothesis=tf.nn.softmax(tf.matmul(X,W)+b)
cost=tf.reduce_mean(-tf.reduce_sum(Y*tf.log(hypothesis),axis=1))
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
预测结果:
实际计算得到的是属于每个类的概率。
取概率最大的那个为结果。
因此在用于预测时,要:
a=sess.run(hypothesis,feed_dict={X:
[[1,11,7,9]]})
print(a,sess.run(tf.arg_max(a,1)))
#分类的结果共有3类,值为1的为所属类别
nb_classes=3
#X的两个维度:
样本个数和特征个数
x_data=[[1,2,1,1],[2,1,3,2],[3,1,3,4],[4,1,5,5],[1,7,5,5],[1,2,5,6],[1,6,6,6],[1,7,7,7]]
y_data=[[0,0,1],[0,0,1],[0,0,1],[0,1,0],[0,1,0],[0,1,0],[1,0,0],[1,0,0]]
X=tf.placeholder("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AI 学习 笔记