多平台统一管理软件接口,如何实现多平台统一管理软件接口
270
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~