Tensor flow实现FCN和linear regression: Y=XW+b

FCN(fully connect network)和linear regression其中的数学模型为:

Y=XW+b

(一)1维情形

举栗:输入向量x为观测一次得到的一组特征(N个特征),单次输出y为这次观测值作出预测,其间的映射为f:R^{^{N}} \rightarrow R

共有M次观测。

加上偏置b,可以这样实现:

x=[x1,x2,...,xN,1]

第m列向量w=[w1,w2,...,wN,b]

代码:

X = tf.placeholder(tf.float32,[None,num_features])

Y = tf.placeholder(tf.float32,[None,1])

w = tf.Variable(tf.random_normal((num_features,1)),name='weights')

pred = tf.matmul(X,w)

上述运算为:

X:?× (N+1)

w:(N+1)×1

Y:?×1

点评:代码中num_features为N+1, 即特征增广1,目的是为了加上偏置b。问号为重复观测的次数,这里为M。可以看出,预测值pred为长度为M的一维向量。


(二)2维情形

栗子:输入图像为N×N分辨率,首先将图像每一行依次放进一个行向量,如32×32图像重排为长度1024的向量。输出y分类的概率,共M种分类。其间的映射为:f:R^{N\times N}\rightarrow R^{M}

X = tf.placeholder(tf.float32,[None,n_dim])

Y = tf.placeholder(tf.float32,[None,n_classes])

w = tf.Variable(tf.random_normal([n_dim,n_classes],stddev=0.01),name='weights')

b = tf.Variable(tf.random_normal([n_classes]),name='weights')

out = tf.matmul(X,w) + b

上述运算为

X:?× (N×N)

w:(N × N) × M

Y:?× M

b: M × 1

点评:代码中n_dim即是N×N,n_class即是M。问号?代表共K副图像。那么上述运算除了矩阵相乘,还涉及第三维,即输出out的size:1×M×K,便于理解。

更多数学原理小文请关注公众号:未名方略

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞行codes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值