tensorflow google实战 学习笔记——TensorFlow入门(2)

google实战介绍了tensorflow游乐场的使用以及前项传播算法,本文不总结深度学习算法内容,在已掌握深度学习基础知识后总结tensorflow实现其算法的相关内容。(也就是tensorflow各函数的具体用法,深度学习基础知识根据NG的课程学习)

神经网络前向传播过程:

a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

tf.matmul(a,b)实现了矩阵的乘法功能。

TensorFlow 变量
TensorFlow中的变量需要指定初始值,在神经网络中给参数富裕随机初始值最为常见,所以一般也使用随机数给TensorFlow中的变量初始化。
在TensorFlow中声明一个2*3的矩阵变量的方法:

weights = tf.Variable(tf.random_normal([2,3],stddev=2))

变量声明函数tf.Variable(),在变量声明函数中给出了变量初始化的方法:产生一个2*3矩阵,矩阵中的元素是均值为0,标准差为2的随机数。TensorFlow中变量的初始值可以设置成随机数、常数、或者是通过其他变量的初始值计算得到。

实现前向传播的代码:

import tensorflow as tf 
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

x = tf.constant([[0.7,0.9]])

a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

sess = tf.Session()
sess.run(w1.initializer)
sess.run(w2.initializer)

print(sess.run(y))
sess.close()

assign函数:
assign (
ref ,
value ,
validate_shape = None ,
use_locking = None ,
name = None

通过将 “value” 赋给 “ref” 来更新 “ref”。
此操作输出在赋值后保留新值 “ref” 的张量。这使得更易于链接需要使用重置值的操作。
一个变量在构建后类型不能再改变,通过assign函数重新赋值时需要注意类型是否相符,同时维度如果不符要将validate_shape设置为False,assign语句才能正常运行。

w1=tf.Variable(tf.random_normal([2,3],stddev=1,name='w1'))
w2=tf.Variable(tf.random_normal([2,3],dtype=tf.float64,stddev=1,name='w2'))
w1.assign(w2)

程序由于w1 w2类型不符 出现错误

w1=tf.Variable(tf.random_normal([2,3],stddev=1,name='w1'))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,name='w2'))
tf.assign(w1,w2)

此时会报维度不匹配错误信息,改为:

tf.assign(w1,w2,validate_shape=False)

可将w2的值赋给w1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值