深度学习1.0

网友投稿 264 2022-10-31


深度学习1.0

一张图像输入到计算机中会表示成 “H(长),W(宽),C(通道)”和像素点,上图的就是长300,宽100,通道为3,然后用像素点表示的的图片2.图像受光照强度,角度,部分遮蔽,形状改变,背景混入的影响。

3.机器学习常规套路,(1)数据收集,给定标签即告诉计算机什么是猫什么是狗,打上一个标签(2)训练一个分类器(3)测试评估

4.找到最好参数(交叉验证)

Train

Val

Test 永远用不上

Train :test =9:1

如上图,1-4进行建模,5用来验证

训练集标注:

图像标注:x,:图像,由像素点组成;w:得分值,那些像素点重要,那些不重要

将32323转换为一组列向量,W每个像素点的权重参数,

所以矩阵为32323的行向量;最终为13072(行)30721(列)=11的向量,即得到的是一个类别的得分;

若是103072即可得到是个类别的的得分值 b:偏置项(val)

1的矩阵,中间有2个神经元权重参数矩阵32中间有三个神经元权重参数矩阵式33,过拟合:神经网络为满足个别点,决策边界为了满足个别分割点而发生奇怪的分割

正则化:是惩罚参数,随着惩罚参数的变化越来越平滑3.激活函数:随着数增大sIGMOID函数接近于1,梯度约等于0,反向传播就就变成0不能更新

Relu函数:max(0,x)梯度传播直接传给大的数

4.数据预处理

对于原始数据:原始数据是杂乱无章的,用x-x的维度上的均值,用y-y维度上的均值得到的就是以0为中心化

此时,x方向上的差异比较小,Y方向上的差异比较大,利用relue函数的时候,会认为Y的比较重要,但一开始的时候这俩是一样重要的,所以需要进行归一化。5.权重初始化

权重初始化不能值一样不然会前向传播一样,反向传播也一样,参数朝着一个方向去更新

所以采用高斯初始化,以0为均值,指定一个小的标准差。6.Drop -out:防止神经网络过拟合

随机选择神经元的保留和删除,但比列是可以指定的,一般保留百分之50-60

Tensorflow中0.6是指保留百分之60的神经元。

Tensorflow基本操作,当我们拿到一个值得时候,要把它转化成支持tenorflow计算的格式 。

(1)用tf创建变量,将list格式的行向量转化成tf所能支持的

x=tf.Variable([1,2])

a=tf.constant([3,3])

(2)#减法op

sub=tf.subtract(x,a)

(3)以上只是创建了一个可执行域,要用的话要对用到的进行全局变量初始化

#tensorflow中变量使用前必须初始化 init=tf.global_variables_initializer() (4)以上虽然写了全部功能但实际未执行需用: with tf.Session() as sess: #会话2先初始化变量 sess.run(init) print(sess.run(sub)) print(sess.run(add)) (5)随机高斯初始化 norm = tf.random_normal([2, 3], mean=-1, stddev=4) (,均值,标准差) (6)shuffe操作

Shuffle the first dimension of a tensor

c = tf.constant([[1, 2], [3, 4], [5, 6]]) shuff = tf.random_shuffle© (7)将numpy转换成tf格式 import numpy as np a = np.zeros((3,3)) ta = tf.convert_to_tensor(a) (8)每次传输的数据不同但大小一样,placeholder先固定好数据,传值实在run里进行操作 input1 = tf.placeholder(tf.float32)#gu固定好数据大小 input2 = tf.placeholder(tf.float32) output = tf.mul(input1, input2) with tf.Session() as sess: print(sess.run([output], feed_dict={input1:[7.], input2:[2.]})) feed_dict名字不不能改,按人家的来

二、Tensorflow线性回归

(1)画图库

import matplotlib.pyplot as plt

1.神经网络读热编码 one_hot=True:

即数字0-10,选中那个数字置1,其余位置0

3.简单神经网络搭建

NETWORK TOPOLOGIES

n_hidden_1 = 256

n_hidden_2 = 128

n_input = 784

n_classes = 10

指定placeholder类型,指定float类型,维度none,实际等于batchsiiize.a,输入大小必须一致,n_input

INPUTS AND OUTPUTS

x = tf.placeholder(“float”, [None, n_input]) y = tf.placeholder(“float”, [None, n_classes])#结果值

NETWORK TOPOLOGIES

n_hidden_1 = 256 n_hidden_2 = 128 n_input = 784 n_classes = 10 指定输入随机初始化

INPUTS AND OUTPUTS

x = tf.placeholder(“float”, [None, n_input]) y = tf.placeholder(“float”, [None, n_classes])

NETWORK PARAMETERS

stddev = 0.1 weights = { ‘w1’: tf.Variable(tf.random_normal([n_input, n_hidden_1], stddev=stddev)), ‘w2’: tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2], stddev=stddev)), ‘out’: tf.Variable(tf.random_normal([n_hidden_2, n_classes], stddev=stddev)) } 初始化b biases = { ‘b1’: tf.Variable(tf.random_normal([n_hidden_1])), ‘b2’: tf.Variable(tf.random_normal([n_hidden_2])), ‘out’: tf.Variable(tf.random_normal([n_classes])) } print (“NETWORK READY”)

设定预测值 pred = multilayer_perceptron(x, weights, biases)

选择sigmoid激活函数:(可改为relu) layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(_X, _weights[‘w1’]), _biases[‘b1’])) layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, _weights[‘w2’]), _biases[‘b2’])) 损失函数:softmax_cross_entropy_with_logits(pred, y)

LOSS AND OPTIMIZER

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y)) optm = tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(cost) corr = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1)) accr = tf.reduce_mean(tf.cast(corr, “float”))

6.卷积神经网络分块提取

指定每28*28个单元格进行特征提取,一维,

为了得到更多特征需要多个filter

边缘填充:用0填充,使边缘和中间算的次数差不多

步长:每次移动多少个。特征结果不同

不能整除向下取整,stride是步长,pad外层加0

池化层:下采样减少原始输入的大小

最大池化:将特征图变化,指定大小后选取每个部分最大的数据放入新设定的特征

P4-6重点看、

Drop out =0.。。。保留率


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口设计文档(接口设计文档和接口文档)
下一篇:接口测试工具(rpc接口测试工具)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~