19、tensorflow神经网络

一、原理

“TensorFlow是一个使用数据流图进行数值计算的开源软件库。图中的节点表示数学运算,而图边表示在它们之间传递的多维数据阵列(又称张量)。灵活的体系结构允许你使用单个API将计算部署到桌面、服务器或移动设备中的一个或多个CPU或GPU。
[图片上传失败...(image-3d5b1e-1589252952983)])

(一)、Tensorflow

  • 所有的深度学习的原理都是类似的。
  • pip install tensorflow
  • 这个包比较大,包扣cpu,Gpu

(二)、深度学习

  • keras--高就api
  • 对方法进行了简单的封装
  • pytorch 是Facebook开发的
  • cntk--微软开发的
  • paddlepaddle百度开发的
  • 上面这些的基本的原理都是类似的
  • 我们主要介绍tensorflow pytorch
  • 市场需要--tensorflow需求最多的

(三、)tensorflow入门及原理

  • 官方网站:
    http://www.tensorfly.cn/tfdoc/get_started/basic_usage.html
  • 什么是机器?
  • 涉及多个领域
  • 原来使用sklearn机器学习
  • 现在使用TensorFlow
  • 差异只是计算方式不一样
    *深度学习,神经网络模仿人类大脑的工作方式
    *解决实际的问题
  • 什么是深度学习(神经网络)?
  • 是一种模仿动物的神经网络结构进行信息处理的数学的模型,在工程与学术界也常直接简称为神经网络或类神经网络。
  • 深度学习:思维的转变---深度学习模仿大脑的操作,有一些模型是不可以解释的,它的模型解决问题了,但是不知道原理是怎么样的。
  • 模型相当的复杂,它是由几百万或者上千万的参数组成的,这就是相当复杂的。
  • 所以深度学习这个模型,和sklearn的模型是完全不一样的。
  • 深度学习不仅仅是代码--更是一种人类的思想.。
  • 不能把机器学习理解成简单的编程=代码的实现,更是要理解成一种人工智能神经网络的实现。

(四、)mnist数据加载的不同的方式。

  • 方式一:
  • from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
# Import MNIST
from tensorflow.examples.tutorials.mnist import input_data
# 电脑上没有压缩文件,自动网上下载!!!
mnist = input_data.read_data_sets(one_hot=True,validation_size = 0)# 告诉这个方法,去当前目录下加载树
# Load data
X_train = mnist.train.images
Y_train = mnist.train.labels
X_test = mnist.test.images
Y_test = mnist.test.labels
Extracting C:/Users/softpo.DESKTOP-PN692CT/tfdata/train-images-idx3-ubyte.gz
Extracting C:/Users/softpo.DESKTOP-PN692CT/tfdata/train-labels-idx1-ubyte.gz
Extracting C:/Users/softpo.DESKTOP-PN692CT/tfdata/t10k-images-idx3-ubyte.gz
Extracting C:/Users/softpo.DESKTOP-PN692CT/tfdata/t10k-labels-idx1-ubyte.gz

使用Tensorflow中的API对数据,进行批量获取

后面目的:同tf.data为神经网咯提供数据

data = tf.data.Dataset.from_tensor_slices((X_train,Y_train)).repeat(10).shuffle(5000).batch(1000)
i = 0
for d in data:
    i+=1
print(i)
600

可视化

import matplotlib.pyplot as plt
plt.imshow(X_train[10000].reshape(28,28))
digit = Y_train[10000] #独热编码,在索引7的位置,占位是1
print(digit)
print(digit.argmax())
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
3
output_4_1.png
  • 方式二
  • from tensorflow.keras.datasets import mnist

导包keras中加载的mnist

from tensorflow.keras.datasets import mnist
import tensorflow as tf
(X_train,y_train),(X_test,y_test) = mnist.load_data()

可视化

import matplotlib.pyplot as plt
plt.imshow(X_train[1022].reshape(28,28))
<matplotlib.image.AxesImage at 0x14bde488>
output_5_1.png

将数据打乱顺序批量获取数据

# Tensor 矢量,张量,numpy数组
# TensorFlow 张量的流动计算
# slices 切片
data = tf.data.Dataset.from_tensor_slices((X_train,y_train))#加载数据
data = data.repeat(10)#重复
data = data.shuffle(5000)#打乱顺序
data = data.batch(1000)#一批去多少数据
# 原数据 60000个,一批取1000个取 60次,重复10次 总共取出600次
i = 0
for d in data:
    i+=1
print(i)
600

(五、)tensorflow基本操作

  • 加减乘除---等
  • 使用tf进行数据的计算的时候,数据的类型必须是对应的。
  • a2=tf.cast(a,tf.float32)这个是可以转换数据的类型的。
  • tf.reshape() tf中改变数据的形状
  • tensorflow的基本操作和numpy中操作是类似的,许多方法名字都是一样的,基本都是一样的、
  • 代码示例:
import tensorflow as tf
import numpy as np
a = tf.constant(np.random.randint(0,10,size=(3,5)))
b = tf.constant(np.random.randint(0,10,size=(1,5)))

c=a+b
c
# 上面的a b的形式不一样的但是还是可以进行运算是你因为,numpy广播极致
<tf.Tensor: shape=(3, 5), dtype=int32, numpy=
array([[13, 15, 15,  8,  8],
       [12, 11, 15,  5,  3],
       [11, 18, 17, 12,  5]])>
# tensorflow为我们提供了方法
tf.add(a,b)
tf.multiply(a,b)

<tf.Tensor: shape=(3, 5), dtype=int32, numpy=
array([[36, 54, 56, 16,  0],
       [32, 18, 56,  4,  0],
       [28, 81, 72, 32,  0]])>
tf.pow(8.0,0.5)
# 幂运算
<tf.Tensor: shape=(), dtype=float32, numpy=2.828427>
a2=tf.cast(a,tf.float32)
a2
# 数据类型的转换
<tf.Tensor: shape=(3, 5), dtype=float32, numpy=
array([[9., 6., 7., 4., 8.],
       [8., 2., 7., 1., 3.],
       [7., 9., 9., 8., 5.]], dtype=float32)>
tf.pow(a2,0.5)
# 注意使用tf计算的时候,数据的类型必须是对应的
<tf.Tensor: shape=(3, 5), dtype=float32, numpy=
array([[3.       , 2.4494898, 2.6457512, 2.       , 2.828427 ],
       [2.828427 , 1.4142135, 2.6457512, 1.       , 1.7320508],
       [2.6457512, 3.       , 3.       , 2.828427 , 2.236068 ]],
      dtype=float32)>
tf.math.log(10.0)
# int类型是无法进行计算的。浮点数是可以的
# 对数的计算
<tf.Tensor: shape=(), dtype=float32, numpy=2.3025851>

降维操作

a=tf.cast(a,tf.int32)
# tf.cast()===类型转换方法
# 上面的a是一个Tensor对
# 这个numpy就是之前的numpy
# 获取数据
a.numpy()
array([[9, 6, 7, 4, 8],
       [8, 2, 7, 1, 3],
       [7, 9, 9, 8, 5]])
a.shape
TensorShape([3, 5])
a.numpy().sum(axis=0)
array([24, 17, 23, 13, 16])
tf.reduce_sum(a,axis=0)
<tf.Tensor: shape=(5,), dtype=int32, numpy=array([24, 17, 23, 13, 16])>
# 这个是tf提供的求和的方法。这个是降维的操作

tensorflow 和我们之前学过的numpy都是类似的

tf的矩阵运算

b=tf.constant(tf.random.normal(shape=[15]))
b=tf.reshape(b,shape=(5,3))
# tf.reshape  tf中改变数据的形状
# tf.float32  tf中改变数据类型的方法

a=tf.cast(a,tf.float32)
# a 和b进行矩阵运算
tf.matmul(a,b)
# b的形状不对应,
<tf.Tensor: shape=(3, 3), dtype=float32, numpy=
array([[-13.390648 ,  -5.2129335,  12.440157 ],
       [ -5.132538 ,  -8.135062 ,   6.5191073],
       [-19.185709 , -15.828344 ,  19.550457 ]], dtype=float32)>

(六、)tensorflow的变量

  • 常量: tf.constant()常量
  • 变量:tf.Variable() 变量
  • 算法训练过程中,变量是调整的,变大变小,适应我们的数据--这就是变量
  • 常量是无法修改的数据
  • 变量是可以修改的数据
  • 变量的应用:大小的变换,参数得是可以调整的都是适用变量来定义的。
  • 总体 来说变量的定义和我们所指定的变量的定义是一样的,不同的是定义的方式是不一样的。
    *常量变量代码如下:
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355