2019/6/9CS231n课程笔记(深度学习框架)

1、设置

#设置用CPU还是GPU进行
with tf.device('/gpu:0'):
    balabalabala

2、一种只有我才能看懂的笔记……

#define计算框架
N,D,H=64,1000,100
x=tf.placeholder(tf.float32,shape=(N,D))
y=tf.placeholder(tf.float32,shape=(N,D))
w1=tf.placeholder(tf.float32,shape=(D,H))
w2=tf.placeholder(tf.float32,shape=(H,D))

#前向传播计算loss值、预测y值
h=tf.maximum(tf.matmul(x,w1),0)
y_pred=tf.matmul(h,w2)
diff=y_pred-y
#计算loss在w1,w2上的梯度
loss=tf.reduce_mean(tf.reduce_sum(diff**2,axis=1))#???这是一行的diff进行相加吗?我觉得应该把列的内容加在一块啊。

grad_w1,grad_w2=tf.gradients(loss,[w1,w2])

--------------------------------------------------------
#运行这一框架若干次
with tf.Session() as sess:
    values={x:np.random.randn(N,D),
            w1:np.random.randn(D,H),
            w2:np.random.randn(H,D),
            y:np.random.randn(N,D),}
    out=sess.run([loss,grad_w1,grad_w2],    #实际开始运行框架
                 feed_dict=vlaues)
    loss_val,grad_w1_val,grad_w2_val=out
---------------------------------------------------------
#运行这一框架若干次
with tf.Session() as sess:
    values={x:np.random.randn(N,D),
            w1:np.random.randn(D,H),
            w2:np.random.randn(H,D),
            y:np.random.randn(N,D),}
    learning_rate=1e-5                      #设置学习率更新权重
    for t in range(50):
        out=sess.run([loss,grad_w1,grad_w2],
                     feed_dict=vlaues)
        loss_val,grad_w1_val,grad_w2_val=out
        values[w1]-=learning_rate*grad_w1_val
        values[w2]-=learning_rate*grad_w2_val
---------------------------------------------------------

N,D,H=64,1000,100
x=tf.placeholder(tf.float32,shape=(N,D))
y=tf.placeholder(tf.float32,shape=(N,D))
w1=tf.Varible(tf.random_normal((D,H)))
w2=tf.Varible(tf.random_normal((H,D)))       #初始化w

h=tf.maximum(tf.matmul(x,w1),0)
y_pred=tf.matmul(h,w2)
diff=y_pred-y
#计算loss在w1,w2上的梯度
loss=tf.reduce_mean(tf.reduce_sum(diff**2,axis=1))
grad_w1,grad_w2=tf.gradients(loss,[w1,w2])

#添加w1、w2的更新部分
learning_rate=1e-5 
new_w1=w1.assign(w1-learning_rate*grad_w1)
new_w2=w2.assign(w2-learning_rate*grad_w2)
-------------------------------------------------------

with tf.Session() as sess:
    sess.run(tf.global_variable_initializer())#给w1,w2赋值
    values={x:np.random_normal((N,D),
            y:np.random_normal((N,D),}
    for t in range(50):
        loss_val,=sess.run([loss],feed_dict=values)
-------------------------------------------------------
updates=tf.group(new_w1,new_w2)

with tf.Session() as sess:
    sess.run(tf.global_variable_initializer())#给w1,w2赋值
    values={x:np.random_normal((N,D),
            y:np.random_normal((N,D),}
    losses=[]
    for t in range(50):
        loss_val,=sess.run([loss,updates],
                           feed_dict=values)
-------------------------------------------------------

N,D,H=64,1000,100
x=tf.placeholder(tf.float32,shape=(N,D))
y=tf.placeholder(tf.float32,shape=(N,D))
---------------------------------
w1=tf.Varible(tf.random_normal((D,H)))
w2=tf.Varible(tf.random_normal((H,D)))       #初始化w

h=tf.maximum(tf.matmul(x,w1),0)  
y_pred=tf.matmul(h,w2)            
---------------------------------
loss=tf.losses.mean_squared_error(y_pred,y)

optimizer=tf.train.GradientDescentOptimizer(
updates=optimizer.minimize(loss)

with tf.Session() as sess:
    sess.run(tf.global_variable_initializer())#给w1,w2赋值
    values={x:np.random_normal((N,D),
            y:np.random_normal((N,D),}
    losses=[]
    for t in range(50):
        loss_val,=sess.run([loss,updates],
                           feed_dict=values)
------------------------------------------------------
#用这种方式初始化w和bias
init=tf.contrib.layers.xavier_initializer()
h=tf.layers.dense(inputs=x,units=H,activation=tf.nn.relu,kernel_initializer=init)
y_pred=tf.layer.dense(inputs=h,units=D,kernel_initializer=init)
------------------------------------------------------

3、Keras

4、feed_dict与占位符

学习资料:https://blog.csdn.net/m0_37324740/article/details/77803694

5、tf.group()操作

学习资料:https://blog.csdn.net/LoseInVain/article/details/81703786

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值