本文是 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人工神经网络第一次作业-参考答案第十部分-第三小题相关推荐

  1. 2020人工神经网络第一次作业-参考答案第十部分

    本文是 2020人工神经网络第一次作业 的参考答案第十部分 ➤第十题参考答案-第1小题 1.题目分析 (1)数据集分析 数据集合包括有两个目录:test, train.其中分别包括有95,510张车牌 ...

  2. 2020人工神经网络第一次作业-参考答案第九部分

    本文是 2020人工神经网络第一次作业 的参考答案第九部分 ➤09 第九题参考答案 1.数据整理 根据char7data.txt中的文件将训练样本(21个字符)以及对应的输出值转化到两个矩阵:char ...

  3. 2020人工神经网络第一次作业-参考答案第八部分

    本文是 2020人工神经网络第一次作业 的参考答案第八部分 ➤08 第八题参考答案 1.题目分析 (1) 数据下载 从https://www.cosy.sbg.ac.at/~pmeerw/Waterm ...

  4. 2020人工神经网络第一次作业-参考答案第七部分

    本文是 2020人工神经网络第一次作业 的参考答案第七部分 ➤07 第七题参考答案 1.题目分析 使用AutoEncoder对于下面样本进行压缩: ▲ 样本英文字符 说明:上面数据可以从作业文件:AB ...

  5. 2020人工神经网络第一次作业-参考答案第六部分

    本文是 2020人工神经网络第一次作业 的参考答案第六部分 ➤06 第六题参考答案 1.题目分析 按照题意,构造如下的神经网络. 隐层的传递函数使用sigmoid函数,输出层的传递函数采用线性传递函数 ...

  6. 2020人工神经网络第一次作业-参考答案第五部分

    本文是 2020人工神经网络第一次作业 的参考答案第五部分 ➤05 第五题参考答案 1.题目分析 MATLAB中的Peaks函数是一个二元函数,构造BP网络来逼近该函数,网络的输入节点数量为2,输出节 ...

  7. 2020人工神经网络第一次作业-参考答案第四部分

    本文是 2020人工神经网络第一次作业 的参考答案第四部分 ➤04 第四题参考答案 1.使用BP网络逼近Hermit函数 f(x)=1.1(1−x+2x2)⋅e−x22f\left( x \right ...

  8. 2020人工神经网络第一次作业-参考答案第三部分

    本文是 2020人工神经网络第一次作业 的参考答案第三部分 ➤03 第三题参考答案 1.构造BP网络进行函数逼近 (1) 逼近简单函数 构建单隐层的神经网络,隐层节点个数20,传递函数为sigmoid ...

  9. 2020人工神经网络第一次作业-参考答案第二部分

    本文是 2020人工神经网络第一次作业 的参考答案第二部分 ➤02 第二题答案参考 1.问题描述 原题要求设计一个神经网络对于下面图中的3类模式进行分类.期望输出分别使用: (1,−1,−1)T,(− ...

最新文章

  1. MyBatis复习笔记5:MyBatis代码生成器
  2. 8.10. show vlans
  3. php 嵌套while循环,PHP/SQL在嵌套while循环中替代db调用
  4. PHP中环境变量的设置
  5. 以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发者面板出错总结
  6. This is a Blog Test
  7. 王道计算机网络 应用层整理 超详细版
  8. Navicat for MySQL出现1030-Got error 28 from storage engine错误
  9. 读取数据库并写入excel表中 发送邮件
  10. 超标量处理器设计 姚永斌 第10章 指令提交 摘录
  11. GEE学习笔记3:Landsat8 植被指数计算
  12. 【OBS-studio-webrtc】obs推流到webrtc服务器端:接管OBS输出流到自定义推流服务
  13. Uva375 内接圆和等腰三角形
  14. vhg电路是什么意思_over是什么意思?
  15. 山海镜花vivo服务器微信号,《山海镜花》正式公测!开服说明
  16. 严蔚敏版数据结构——顺序栈
  17. 实现网站访问人数统计
  18. 结合近半年的谷歌算法更新,总结电子商务网站的推广
  19. 第4套 从零到商业实战篇 斗战神篇
  20. bury the hatchet

热门文章

  1. Unity3D在iOS下为啥不能更新的资料收集
  2. apache实现URL地址隐藏跳转
  3. something new
  4. 一次DPM备份Exchange DAG的故障处理过程
  5. c#冒泡、快速、选择和插入排序算法的项目应用
  6. ionic3学习之Android平台打包方式
  7. js禁止用户右键等操作
  8. cocos2dx 实现搓牌(翻牌)效果,包括铺平动画
  9. java.lang.reflect.InaccessibleObjectException: Unable to make
  10. C#语法之匿名函数和Lambda表达式