tensorflow学习(1)

莫凡2017tensorflow(使用更简便版)https://github.com/MorvanZhou/Tensorflow-Tutorial

参考莫凡课程:

1.什么是tensorflow

tensorflow是google开发的一款神经网络的Python外部的结构包,也是一个采用数据流图来进行计算的开源软件库,(学习tensorflow可快速入门神经网络)

(再学习神经网络的构造、如何学习神经网络https://morvanzhou.github.io/tutorials/machine-learning/ML-intro/2-1-NN/)

(有了tensorflow,可以轻松自如玩转神经网络)

tensorflow官网:https://www.tensorflow.org/

https://tensorflow.google.cn/

版本的函数新定义参见:https://tensorflow.google.cn/versions/r1.12/api_docs/python/tf/losses/log_loss

                                       https://github.com/MorvanZhou/Tensorflow-Tutorial

2.为什么使用tensorflow

TensorFlow 无可厚非地能被认定为 神经网络中最好用的库之一. 它擅长的任务就是训练深度神经网络.通过使用TensorFlow我们就可以快速的入门神经网络, 大大降低了深度学习(也就是深度神经网络)的开发成本和开发难度. TensorFlow 的开源性, 让所有人都能使用并且维护, 巩固它. 使它能迅速更新, 提升.(摘自莫凡文章)

3.tensorflow的安装

https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/1-2-install/

4.tensorflow小例子

机器学习:模拟我们数据需要的曲线

5.tensorflow如何处理数据结构

结构:是指tensorflow底层的结构,也就是神经网络的结构

输入层、隐藏层(权重weights和偏置biases)、激励函数、梯度处理、对每一层的参数进行进一步的完善和提升、(不断循环)

tensorflow中第一步:建立结构,再把数据放到结构中,让tensorflow自己去运行(tensorflow的另一个理解:向量在建立的结构下飞)

(Tensorflow 首先要定义神经网络的结构, 然后再把数据放入结构当中去运算和 training.)

6.代码实现创建结构、处理结构

(输出每次训练之后的参数)

import tensorflow as tf
import numpy as np

#创建数据x
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3

#开始创建tensorflow结构
Weights =tf.Variable(tf.random_uniform([1],-1.0,1.0)) #随机变量,用随机数列生成的方式生成,一维数列,范围-1到1
biases = tf.Variable(tf.zeros([1]))  #初始值是0
#学习:从初始值提升到参数训练值

y=Weights*x_data + biases  #预测的y值
loss = tf.reduce_mean(tf.square(y-y_data)) #计算预测的y和实际的y_data的差别
optimizer = tf.train.GradientDescentOptimizer(0.5)  #神经网络对其进行优化 优化器  GradientDescentOptimizer:梯度下降优化器 0.5:学习效率,一般是小于1的数
train= optimizer.minimize(loss)  #用优化器减小误差

#init = tf.initialize_all_variables()  #在神经网络中初始化变量,不加括号的话,会报错:TypeError: Fetch argument .wrapped at 0x000000000C0A36A8> has invalid type ,
init = tf.global_variables_initializer()
#创建tensorflow结构结束

sess = tf.Session()
sess.run(init)  #run开始,sess类似指针,激活神经网络结构  很重要

#开始训练
for step in range(201):
    sess.run(train)
    if step % 20 == 0:  #每隔20步进行一次打印
        print(step,sess.run(Weights),sess.run(biases))


'''
0 [0.37426233] [0.21016647]
20 [0.16258861] [0.26858974]
40 [0.11535621] [0.29229346]
60 [0.10376766] [0.2981092]
80 [0.1009244] [0.2995361]
100 [0.10022683] [0.29988617]
120 [0.10005568] [0.2999721]
140 [0.10001367] [0.29999316]
160 [0.10000337] [0.2999983]
180 [0.10000083] [0.2999996]
200 [0.10000022] [0.29999992]

'''

7.认识Session会话

Tensorflow 中的  Session 是 为了控制,和输出文件的执行的语句. 运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分.

 

"""
Please note, this code is only for python 3+. If you are using python 2+, please modify the code accordingly.
"""
import tensorflow as tf
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'  #https://blog.csdn.net/hq86937375/article/details/79696023

matrix1 = tf.constant([[3, 3]])
matrix2 = tf.constant([[2],
                       [2]])
product = tf.matmul(matrix1, matrix2)  # matrix multiply np.dot(m1, m2)

# method 1
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()

# method 2
with tf.Session() as sess:
    result2 = sess.run(product)
    print(result2)

'''
12
'''

8.变量

import tensorflow as tf

state = tf.Variable(0,name="counter") #定义state变量,必须是用Variable,才能说明是变量

one = tf.constant(1)  #定义常量one
new_value = tf.add(state,one)  #在state的基础上加one,将值赋值给new_value
update = tf.assign(state,new_value)  #将new_value的变量加载到state

init = tf.global_variables_initializer()  #初始化变量  must have if define variable

with tf.Session() as sess:
    sess.run(init)  #真正意义上初始化变量
    for _ in range(3):
        sess.run(update)
        print(sess.run(state))
'''
1
2
3
'''

9.placeholder传入值

placeholder 是 Tensorflow 中的占位符,暂时储存变量.Tensorflow 如果想要从外部传入data, 那就需要用到 tf.placeholder(), 然后以这种形式传输数据 sess.run(***, feed_dict={input: **}).

import tensorflow as tf

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)

output = tf.multiply(input1,input2)

with tf.Session() as sess:
    print(sess.run(output,feed_dict={input1:[7],input2:[2]}))  #字典形式传入

 

你可能感兴趣的:(TensorFlow)