鱼C论坛

 找回密码
 立即注册
查看: 1213|回复: 3

hopfield神经网络不能达到预期

[复制链接]
发表于 2020-6-8 21:39:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #!/usr/bin/env python
  2. # coding: utf-8

  3. # In[1]:


  4. import numpy as np
  5. import neurolab as nl
  6. import matplotlib.pyplot as plt


  7. # In[2]:


  8. target = np.array([[0,0,0,0,0,0,0,0,
  9.                    0,0,0,1,1,0,0,0,
  10.                    0,0,1,0,0,1,0,0,
  11.                    0,1,0,0,0,0,1,0,
  12.                    0,1,0,0,0,0,1,0,
  13.                    0,1,0,0,0,0,1,0,
  14.                    0,1,0,0,0,0,1,0,
  15.                    0,1,0,0,0,0,1,0,
  16.                    0,1,0,0,0,0,1,0,
  17.                    0,1,0,0,0,0,1,0,
  18.                    0,1,0,0,0,0,1,0,
  19.                    0,1,0,0,0,0,1,0,
  20.                    0,1,0,0,0,0,1,0,
  21.                    0,0,1,0,0,1,0,0,
  22.                    0,0,0,1,1,0,0,0,
  23.                    0,0,0,0,0,0,0,0],
  24.                   
  25.                    [0,0,0,0,0,0,0,0,
  26.                    0,0,0,0,1,0,0,0,
  27.                    0,0,0,1,1,0,0,0,
  28.                    0,0,1,0,1,0,0,0,
  29.                    0,0,0,0,1,0,0,0,
  30.                    0,0,0,0,1,0,0,0,
  31.                    0,0,0,0,1,0,0,0,
  32.                    0,0,0,0,1,0,0,0,
  33.                    0,0,0,0,1,0,0,0,
  34.                    0,0,0,0,1,0,0,0,
  35.                    0,0,0,0,1,0,0,0,
  36.                    0,0,0,0,1,0,0,0,
  37.                    0,0,0,0,1,0,0,0,
  38.                    0,0,0,0,1,0,0,0,
  39.                    0,0,1,1,1,1,1,0,
  40.                    0,0,0,0,0,0,0,0],
  41.                   
  42.                    [0,0,0,0,0,0,0,0,
  43.                    0,0,1,1,1,1,0,0,
  44.                    0,1,0,0,0,0,1,0,
  45.                    0,1,0,0,0,0,1,0,
  46.                    0,0,0,0,0,0,1,0,
  47.                    0,0,0,0,0,0,1,0,
  48.                    0,0,0,0,0,0,1,0,
  49.                    0,0,0,0,0,1,0,0,
  50.                    0,0,0,0,1,0,0,0,
  51.                    0,0,0,1,0,0,0,0,
  52.                    0,0,1,0,0,0,0,0,
  53.                    0,1,0,0,0,0,0,0,
  54.                    0,1,0,0,0,0,0,0,
  55.                    0,1,0,0,0,0,0,0,
  56.                    0,1,1,1,1,1,1,0,
  57.                    0,0,0,0,0,0,0,0]
  58.                   ])


  59. # In[3]:


  60. def visualized(data,title):
  61.     fig,ax = plt.subplots()
  62.     ax.imshow(data,cmap=plt.cm.gray,interpolation='nearest')
  63.     ax.set_title(title)
  64.     plt.show()

  65. for i in range(len(target)):
  66.     visualized(np.reshape(target[i],(16,8)),i)


  67. # In[4]:


  68. #HOPfield是1和-1
  69. target[target==0] = -1

  70. #创建一个hopfield神经网络,吸引子为(012)
  71. net = nl.net.newhop(target)


  72. # In[9]:


  73. #测试数据
  74. test_data1 = np.array([0,0,0,0,0,0,0,0,
  75.                        0,0,0,1,1,0,0,0,
  76.                        0,0,1,0,0,1,0,0,
  77.                        0,1,0,0,0,0,0,0,
  78.                        0,1,0,1,0,0,1,0,
  79.                        0,1,0,0,0,0,1,1,
  80.                        0,1,0,0,1,0,1,0,
  81.                        0,1,0,0,0,0,1,0,
  82.                        0,0,0,0,0,0,1,0,
  83.                        0,1,0,0,0,0,1,0,
  84.                        0,1,0,0,1,0,0,0,
  85.                        0,0,0,0,1,0,1,0,
  86.                        0,1,0,1,0,0,0,0,
  87.                        0,0,1,0,0,1,0,0,
  88.                        0,0,0,1,1,0,0,0,
  89.                        0,0,0,0,0,0,0,0])
  90. test_data2 = np.array([0,1,0,0,0,1,0,0,
  91.                        0,0,0,0,1,0,0,0,
  92.                        0,0,0,1,1,0,0,0,
  93.                        0,0,1,0,1,0,0,0,
  94.                        0,1,0,0,0,0,1,0,
  95.                        0,1,0,0,1,0,1,0,
  96.                        0,0,0,0,1,0,0,0,
  97.                        0,0,0,0,1,0,0,0,
  98.                        0,0,0,1,0,0,1,0,
  99.                        0,1,0,0,1,0,0,0,
  100.                        0,0,0,0,1,0,0,0,
  101.                        0,0,0,0,0,0,0,0,
  102.                        0,0,0,0,1,0,0,0,
  103.                        0,0,0,0,1,0,0,0,
  104.                        1,1,1,1,0,1,1,1,
  105.                        0,0,1,0,0,0,1,0])
  106. test_data3 = np.array([0,0,1,0,0,0,0,0,
  107.                        0,0,1,0,1,1,0,0,
  108.                        0,0,0,0,0,0,0,0,
  109.                        0,0,0,0,0,0,1,0,
  110.                        1,1,0,0,1,0,0,0,
  111.                        0,1,0,0,0,0,1,0,
  112.                        0,1,0,0,1,0,0,0,
  113.                        0,1,0,0,0,1,0,0,
  114.                        0,0,0,0,0,0,0,0,
  115.                        0,0,1,1,0,0,1,1,
  116.                        0,0,1,0,0,0,0,0,
  117.                        0,1,0,0,0,0,0,0,
  118.                        0,1,0,1,0,0,1,0,
  119.                        0,1,0,1,0,0,0,0,
  120.                        0,1,1,0,0,1,1,0,
  121.                        0,0,0,0,0,0,0,0])
  122. test_data4 = np.array([0,0,0,0,0,0,0,0,
  123.                        0,0,1,1,1,1,0,0,
  124.                        0,1,0,0,0,0,1,0,
  125.                        0,1,0,0,0,0,1,0,
  126.                        0,0,0,0,0,0,1,0,
  127.                        0,0,0,0,0,0,1,0,
  128.                        0,0,0,0,0,0,1,0,
  129.                        0,0,0,0,0,1,0,0,
  130.                        0,0,0,0,1,0,0,0,
  131.                        0,0,0,1,0,0,0,0,
  132.                        0,0,1,0,0,0,0,0,
  133.                        0,1,0,0,0,0,0,0,
  134.                        0,1,0,0,0,0,0,0,
  135.                        0,1,0,0,0,0,0,0,
  136.                        0,1,1,1,1,1,1,0,
  137.                        0,0,0,0,0,0,0,0])


  138. # In[10]:


  139. visualized(np.reshape(test_data1,(16,8)),'test1')
  140. visualized(np.reshape(test_data2,(16,8)),'test2')
  141. visualized(np.reshape(test_data3,(16,8)),'test3')
  142. visualized(np.reshape(test_data4,(16,8)),'test4')


  143. # In[7]:


  144. def test(test_data):
  145.     global target
  146.     test_data[test_data==0] = -1
  147.     out = net.sim([test_data])
  148.     for i in range(len(target)):
  149.         if ((out == target[i]).all()):
  150.             print('test_data is ',i)
  151.     visualized(np.reshape(out,(16,8)),'a')
  152.    
  153. test(test_data4)


  154. # In[15]:


  155. test_data4[test_data4==0] = -1
  156. out1 = net.sim([test_data4])
  157. for i in range(len(target)):
  158.     if ((out1 == target[i]).all()):
  159.         print('test_Data is :',i)
  160. visualized(np.reshape(out1,(16,8)),'a')


  161. # In[ ]:




复制代码

批注 2020-06-08 213545.png 批注 2020-06-08 213608.png 批注 2020-06-08 213624.png

这是三个输出图,问题就是,不管换哪一个测试数据,都会得到同一个输出,实在是找不到问题所在。
哪里都找不到答案,只能回到鱼C老家提问了呜呜呜

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 21:41:03 | 显示全部楼层
艹,介么高级,不会
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-11 10:07:20 | 显示全部楼层
很高级,我有同学也做这个,他有次跟我说,python做深度学习,确实方便,但是精度不够,不知道为什么,结果不能达到预期,换了matlib同样的代码思路,结果就跑出来。
我只是听他说过,具体什么原因,我不知道。如果有错误,请指出。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-11 12:17:48 From FishC Mobile | 显示全部楼层
……
据我所知,这个论坛好像没多少人干这个吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 18:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表