【问题标题】:Python neural network codingPython神经网络编码
【发布时间】:2016-08-14 01:58:23
【问题描述】:

我有一个已经完成标准化的皮肤病学数据库。它是一个 CSV 文件。我需要打开文件并输入到一个 numpy 数组中。我的数据库有 34 列和大约 350 行。我的神经网络有 3 个隐藏层。这是我目前用于神经网络的 Python 代码。有人可以帮我输入一个 numpy 数组/矩阵吗? 谢谢

这是我的代码:

import numpy as np
#input x
X = np.array([  ])
#input y
y = np.array([]).T

syn0 = 2*np.random.random((34,26)) - 1
syn1 = 2*np.random.random((26,18)) - 1
syn2 = 2*np.random.random((18,11)) - 1
syn3 = 2*np.random.random((11,6)) - 1
for j in xrange(350):
  l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
  l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
  l3 = 1/(1+np.exp(-(np.dot(l2,syn2))))
  l4 = 1/(1+np.exp(-(np.dot(l3,syn3))))
  l4_delta = (y - l4)*(l4*(1-l4))
  l3_delta = l4_delta.dot(syn3.T) * (l3 * (1-l3))
  l2_delta = l3_delta.dot(syn2.T) * (l2 * (1-l2))
  l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
  syn3 += l1.T.dot(l4_delta)
  syn2 += l1.T.dot(l3_delta)
  syn1 += l1.T.dot(l2_delta)
  syn0 += X.T.dot(l1_delta)

【问题讨论】:

    标签: python csv numpy neural-network


    【解决方案1】:

    我这样做了:

    my_5_input_numbers.csv
    0.3,0.5,0.6,0.7,1
    0.4,0.6,0.7,0.8,0
    0.5,0.7,0.8,0.9,1
    

    使用 numpy:

    data_common=np.genfromtxt('my_5_input_numbers.csv',delimiter=',')
    """
    data_common=array([[ 0.3,  0.5,  0.6,  0.7,  1. ],
           [ 0.4,  0.6,  0.7,  0.8,  0. ],
           [ 0.5,  0.7,  0.8,  0.9,  1. ]])
    data_common.shape=(3,5)       
    """
    
    X_train=data_common[:,-1]#X_train.shape=(3,4)
    y_train=data_common[0:4,-1]#y_train.shape=(3,)
    y_train=y_train.reshape(3,1)
    

    【讨论】:

      【解决方案2】:

      假设标签在最后一列,

      X = np.array([[float(cell) for cell in row[:-1]] for row in csv.reader(open(csv_filename))])
      Y = np.array([float(row[-1]) for row in csv.reader(open(csv_filename))])
      

      我认为你不需要转置Y,假设它是一维的。

      【讨论】:

      • 谢谢。这是我得到的错误 Error: l1 = 1/(1+np.exp(-(np.dot(X,syn0)))) ValueError: 形状 (4,33) 和 (34,26) 未对齐: 33(暗 1)!= 34(暗 0)
      • 也许您的标签在单独的文件中?听起来您有 34 个功能,所以 X 应该读取每一列,而不仅仅是最后一列。
      • 哦.. 你能告诉我如何解决它吗?在 X....:l1 = 1/(1+np.exp(-(np.dot(X,syn0)))) 和在 y:l4_delta = (y - l4)*(l4*(1-l4 ))
      • 我使用了转置功能,报错了..谢谢你的帮助.. syn3 += np.dot(l3.transpose(),l4_delta)
      • 好的,听起来不错。如果对您有帮助,您可以接受我的回答。
      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 2023-03-23
      • 2021-08-17
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 2019-05-05
      相关资源
      最近更新 更多