python-tensorflow框架学习 -1

前言: 关于深度学习入坑一段时间了,刚开始学习的时候也接触过tensorflow框架,写过一点代码,后来觉得静态图对于我这种学渣来说有点南,后来找到了比较友好的pytorch。因此对于tensorflow完全陌生啊啊啊! 而且tf2.0版本参考了pytorch动态图的思想,将tf进行了优化。另谈一下最近为什么想要把tf学起来的原因:因为项目需要呀 哈哈哈  。本学习主要是借助张沫帆(莫烦)大佬的学习资料学习,link如下:

video : https://www.bilibili.com/video/av16001891?p=1  

github:https://github.com/MorvanZhou/Tensorflow-Tutorial/tree/master/tutorial-contents  about tensorflow。github上也有关于pytorch的材料,有需要的伙伴请自取。

注: 本系列的实现requirments: numpy -1.17.4 ;tensorflow - 1.13.1 ;scikit-learn - 0.22.1 (tf1.x+ 跑通问题不大,但tf2.0好多写法都有改变,是tf2.0版本的伙伴,可以阅读官方材料,自行修改)

 

part one 静态图中的重要节点的实验:

    *  1.1 session 

   *  1.2 placeholder

   *  1.3 variables

   * 1.4 activation function

* 1.1 session.py 

# py1 最简单的一个完整的tf流程:建立数据集 - 创建结构 - 初始化变量 - - 创建会话并运行前面的静态图
import tensorflow as tf
import numpy as np
# 1 create data
x_data = np.random.rand(100).astype(np.float)
y_data = x_data * 0.1 + 0.3
# 2 create structure start #
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))
y = Weights * x_data + biases
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# 3 init variable
init = tf.global_variables_initializer()
# 3 create sessions and run
sess = tf.Session()
sess.run(init)
for step in range(201):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(Weights), sess.run(biases))

1.2 placeholder.py 

# placeholder (占位符)用法  # tf1.x, 先建立相应的占位符,后面再传入具体的参数进行run。[对比静态图的思想:先建立好网络结构,然后建立会话和传入数据再进行相应会话中的学习]
import tensorflow as tf
x1 = tf.placeholder(dtype=tf.float32, shape=None)
y1 = tf.placeholder(dtype=tf.float32, shape=None)
z1 = x1 + y1

x2 = tf.placeholder(dtype=tf.float32, shape=[2, 1])
y2 = tf.placeholder(dtype=tf.float32, shape=[1, 2])
z2 = tf.matmul(x2, y2)
with tf.Session() as sess:
    # when only one operation to run
    z1_value = sess.run(z1, feed_dict={x1: 1, y1: 2})
    # when run multiple operations
    z1_value, z2_value = sess.run([z1, z2], feed_dict={x1: 1, y1: 2, x2: [[2], [2]], y2: [[3, 3]]})
    print(z1_value)
    print(z2_value)

1.3  variables.py 

# _variable 的用法 :变量的用法是先定义,后初始化再使用
import tensorflow as tf
var = tf.Variable(0)     # our first variable in the "global_variable" set
add_operation = tf.add(var, 1)   # 定义变量的初始加法
update_operation = tf.assign(var, add_operation)  # 定义变量 + 常量的运算
with tf.Session() as sess:
    # once define variables, you have to initialize them by doing this
    sess.run(tf.global_variables_initializer())
    for _ in range(3):
        sess.run(update_operation)
        print(sess.run(var))

1.4 activation.py

# activation function 用法
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
# 1 create fake data
x = np.linspace(-5, 5, 200)
# 2 generate popular activationg function
y_relu = tf.nn.relu(x)
y_sigmoid = tf.nn.sigmoid(x)
y_tanh = tf.nn.tanh(x)
y_softplus = tf.nn.softplus(x)
# 3 建立会话并运行
sess = tf.Session()
y_relu, y_sigmoid, y_tanh, y_softplus = sess.run([y_relu, y_sigmoid, y_tanh, y_softplus])
# 4 画图
plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x, y_relu, c='red', label='relu')
plt.ylim(-1, 5)
plt.legend(loc='best')

plt.subplot(222)
plt.plot(x, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')

plt.subplot(223)
plt.plot(x, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')

plt.subplot(224)
plt.plot(x, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')

plt.show()

四个常用激活函数的应用:图结果如下:

总结:本部分是关于session + placeholder + variables + activation function四个部分。写一点自己的理解:关于静态图,一般而言,我们需要将数据集放入,并根据网络架构的输入定义相应的占位符、建立具体的网络结构、定义相应的loss函数、需要使用的优化器、然后建立会话运行(包括初始化所有变量、运行相应的网络结构模型)。

即最简单的一个tf代码:[不涉及到保存/读取模型文件、tensorboard的使用、optimizer的优化、split data 的划分、可视化操作,其实这些操作全部是在最基本的网络结构上加相应的部件]

— step 1: 数据集的写入

— step 2: 根据网络架构的输入定义相应的占位符

— step 3: 建立具体的网络结构

— step 4: 定义相应的loss函数

— step 5: 需要使用的优化器

— step 6: 建立会话运行(包括初始化所有变量、运行相应的网络结构模型)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值