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