2020人工神经网络第一次作业-参考答案第十部分-第三小题
本文是 2020人工神经网络第一次作业 的参考答案第十部分
➤第十题参考答案-第3小题
1.题目分析
识别图像是在黑色背景下的四个点组成的目标。它具有特定的方向。
▲ 图片样例
图片的基本参数为:
图片的尺寸:
图片的高:495
图片的宽:761有效区域:
Left = 67; Top = 9
width = 623; Height = 465
2.求解过程
(1)采集、平滑处理
▲ 图片基本处理
(2)寻找亮点中心
- 对X,Y进行投影取平均:
垂直投影取平均: imdata.mean(0)
水平投影取平均:imdata.mean(1)
▲ 对图像进行X,Y投影
- 将投影平均值小于18的置零
imx[imx < 18]=0
imy[imy < 18] = 0
获得图片在X,Y方向上的投影平均值,并去除了背景噪声:Ix[n],Iy[n]I_x \left[ n \right],\,\,I_y \left[ n \right]Ix[n],Iy[n]
▲ 将平均值小于18数值置为0
- 计算出投影中心
Xc=∑nIx[n]⋅n∑nIx[n],Yc=∑nIy[n]⋅n∑nIy[n]X_c = {{\sum\limits_n^{} {I_x \left[ n \right] \cdot n} } \over {\sum\limits_n^{} {I_x \left[ n \right]} }},\,\,Y_c = {{\sum\limits_n^{} {I_y \left[ n \right] \cdot n} } \over {\sum\limits_n^{} {I_y \left[ n \right]} }}Xc=n∑Ix[n]n∑Ix[n]⋅n,Yc=n∑Iy[n]n∑Iy[n]⋅n
centerx = imx.dot(arange(len(imx)))/sum(imx)
centery = imy.dot(arange(len(imy)))/sum(imy)
▲ 计算出的X,Y方向的重心
※ 未完待补充
▲ 图片的角度
3.结果分析
▲ 训练不收了的情况
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# HW10_3.PY -- by Dr. ZhuoQing 2020-11-29
#
# Note:
#============================================================from headm import *
from bp1sigmoid import *data, angle = tspload('train_data', 'data', 'angle')
data = squeeze(data)
angle = angle.reshape(1,-1)x_train = data/255
y_train = angle / 360printff(x_train.shape, y_train.shape)
printf(y_train)#------------------------------------------------------------
DISP_STEP = 100def train(X, Y, number_iteration, learning_rate, print_cost=False, Hn=10):parameters = initialize_parameters(X.shape[1], Hn, Y.shape[0])costdim = []for i in range(0, number_iteration):A2,cache = forward_propagate(X, parameters)cost = calculate_cost(A2, X, parameters)grads = backward_propagate(parameters, cache, X, Y)parameters = update_parameters(parameters, grads, learning_rate)if print_cost and i % DISP_STEP == 0:printf('Cost after iteration:%i = %f'%(i, cost))costdim.append(cost)return parameters, costdim#------------------------------------------------------------
parameters, cost = train(x_train, y_train, 5000, 0.5, True, 10)
stepdim = arange(0, len(cost)) * DISP_STEP
plt.plot(stepdim, cost)
plt.xlabel("Step")
plt.ylabel("Error")
plt.grid(True)
plt.tight_layout()
plt.show()#------------------------------------------------------------
# END OF FILE : HW10_3.PY
#============================================================
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# BP1SIGMOID.PY -- by Dr. ZhuoQing 2020-11-17
#
# Note:
#============================================================from headm import *#------------------------------------------------------------
# Samples data constructionrandom.seed(int(time.time()))#------------------------------------------------------------
def shuffledata(X, Y):id = list(range(X.shape[0]))random.shuffle(id)return X[id], (Y.T[id]).T#------------------------------------------------------------
# Define and initialization NN
def initialize_parameters(n_x, n_h, n_y):W1 = random.randn(n_h, n_x) * 0.5 # dot(W1,X.T)W2 = random.randn(n_y, n_h) * 0.5 # dot(W2,Z1)b1 = zeros((n_h, 1)) # Column vectorb2 = zeros((n_y, 1)) # Column vectorparameters = {'W1':W1,'b1':b1,'W2':W2,'b2':b2}return parameters#------------------------------------------------------------
# Forward propagattion
# X:row->sample;
# Z2:col->sample
def forward_propagate(X, parameters):W1 = parameters['W1']b1 = parameters['b1']W2 = parameters['W2']b2 = parameters['b2']Z1 = dot(W1, X.T) + b1 # X:row-->sample; Z1:col-->sampleA1 = 1/(1+exp(-Z1))Z2 = dot(W2, A1) + b2 # Z2:col-->sampleA2 = Z2 # Linear outputcache = {'Z1':Z1,'A1':A1,'Z2':Z2,'A2':A2}return Z2, cache#------------------------------------------------------------
# Calculate the cost
# A2,Y: col->sample
def calculate_cost(A2, Y, parameters):err = [x1-x2 for x1,x2 in zip(A2.T, Y.T)]cost = [dot(e,e) for e in err]return mean(cost)#------------------------------------------------------------
# Backward propagattion
def backward_propagate(parameters, cache, X, Y):m = X.shape[0] # Number of the samplesW1 = parameters['W1']W2 = parameters['W2']A1 = cache['A1']A2 = cache['A2']dZ2 = (A2 - Y)dW2 = dot(dZ2, A1.T) / mdb2 = sum(dZ2, axis=1, keepdims=True) / mdZ1 = dot(W2.T, dZ2) * (A1 * (1-A1))dW1 = dot(dZ1, X) / mdb1 = sum(dZ1, axis=1, keepdims=True) / mgrads = {'dW1':dW1,'db1':db1,'dW2':dW2,'db2':db2}return grads#------------------------------------------------------------
# Update the parameters
def update_parameters(parameters, grads, learning_rate):W1 = parameters['W1']b1 = parameters['b1']W2 = parameters['W2']b2 = parameters['b2']dW1 = grads['dW1']db1 = grads['db1']dW2 = grads['dW2']db2 = grads['db2']W1 = W1 - learning_rate * dW1W2 = W2 - learning_rate * dW2b1 = b1 - learning_rate * db1b2 = b2 - learning_rate * db2parameters = {'W1':W1,'b1':b1,'W2':W2,'b2':b2}return parameters#------------------------------------------------------------
# END OF FILE : BP1SIGMOID.PY
#============================================================
2020人工神经网络第一次作业-参考答案第十部分-第三小题相关推荐
- 2020人工神经网络第一次作业-参考答案第十部分
本文是 2020人工神经网络第一次作业 的参考答案第十部分 ➤第十题参考答案-第1小题 1.题目分析 (1)数据集分析 数据集合包括有两个目录:test, train.其中分别包括有95,510张车牌 ...
- 2020人工神经网络第一次作业-参考答案第九部分
本文是 2020人工神经网络第一次作业 的参考答案第九部分 ➤09 第九题参考答案 1.数据整理 根据char7data.txt中的文件将训练样本(21个字符)以及对应的输出值转化到两个矩阵:char ...
- 2020人工神经网络第一次作业-参考答案第八部分
本文是 2020人工神经网络第一次作业 的参考答案第八部分 ➤08 第八题参考答案 1.题目分析 (1) 数据下载 从https://www.cosy.sbg.ac.at/~pmeerw/Waterm ...
- 2020人工神经网络第一次作业-参考答案第七部分
本文是 2020人工神经网络第一次作业 的参考答案第七部分 ➤07 第七题参考答案 1.题目分析 使用AutoEncoder对于下面样本进行压缩: ▲ 样本英文字符 说明:上面数据可以从作业文件:AB ...
- 2020人工神经网络第一次作业-参考答案第六部分
本文是 2020人工神经网络第一次作业 的参考答案第六部分 ➤06 第六题参考答案 1.题目分析 按照题意,构造如下的神经网络. 隐层的传递函数使用sigmoid函数,输出层的传递函数采用线性传递函数 ...
- 2020人工神经网络第一次作业-参考答案第五部分
本文是 2020人工神经网络第一次作业 的参考答案第五部分 ➤05 第五题参考答案 1.题目分析 MATLAB中的Peaks函数是一个二元函数,构造BP网络来逼近该函数,网络的输入节点数量为2,输出节 ...
- 2020人工神经网络第一次作业-参考答案第四部分
本文是 2020人工神经网络第一次作业 的参考答案第四部分 ➤04 第四题参考答案 1.使用BP网络逼近Hermit函数 f(x)=1.1(1−x+2x2)⋅e−x22f\left( x \right ...
- 2020人工神经网络第一次作业-参考答案第三部分
本文是 2020人工神经网络第一次作业 的参考答案第三部分 ➤03 第三题参考答案 1.构造BP网络进行函数逼近 (1) 逼近简单函数 构建单隐层的神经网络,隐层节点个数20,传递函数为sigmoid ...
- 2020人工神经网络第一次作业-参考答案第二部分
本文是 2020人工神经网络第一次作业 的参考答案第二部分 ➤02 第二题答案参考 1.问题描述 原题要求设计一个神经网络对于下面图中的3类模式进行分类.期望输出分别使用: (1,−1,−1)T,(− ...
最新文章
- MyBatis复习笔记5:MyBatis代码生成器
- 8.10. show vlans
- php 嵌套while循环,PHP/SQL在嵌套while循环中替代db调用
- PHP中环境变量的设置
- 以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发者面板出错总结
- This is a Blog Test
- 王道计算机网络 应用层整理 超详细版
- Navicat for MySQL出现1030-Got error 28 from storage engine错误
- 读取数据库并写入excel表中 发送邮件
- 超标量处理器设计 姚永斌 第10章 指令提交 摘录
- GEE学习笔记3:Landsat8 植被指数计算
- 【OBS-studio-webrtc】obs推流到webrtc服务器端:接管OBS输出流到自定义推流服务
- Uva375 内接圆和等腰三角形
- vhg电路是什么意思_over是什么意思?
- 山海镜花vivo服务器微信号,《山海镜花》正式公测!开服说明
- 严蔚敏版数据结构——顺序栈
- 实现网站访问人数统计
- 结合近半年的谷歌算法更新,总结电子商务网站的推广
- 第4套 从零到商业实战篇 斗战神篇
- bury the hatchet