GIAAKK 发表于 2020-4-24 17:24:12

'NoneType' object is not iterable

'NoneType' object is not iterable不知道怎么改呢

import sys
import time
import math
import datetime
import threading
import numpy as np
import matplotlib.pyplot as plt

def show_data(x,y):
    num_list_x = np.arange(len(x))
    plt.figure(figsize=(20, 10))
    plt.xlim(0, len(num_list_x)+50)
    plt.plot(num_list_x, x, color='b',linestyle='-', label='x')
    plt.legend()
    plt.show()
    if all(y)!= None:
      plt.figure(figsize=(20, 10))
      num_list_y = np.arange(len(y))
      plt.xlim(0, len(num_list_y)+50)
      plt.plot(num_list_y, y, color='r',linestyle='-', label='y')
      plt.legend()
      plt.show()
   

def logistic(t):
    return 1.0/(1+np.exp(-t))

def n_multiply(t, x):
    return t * x

def trans_inverse(x):
    if not isinstance(x, np.ndarray):
      x = np.array(x)
    return np.linalg.inv(x.transpose())

def ica(x):
    m = len(x)      # 样本数目,这里是 2 个
    n = len(x)   # mic 数目,这里是 1000 个
   
    w = [*n for t in range(n)] # 建立个 1000*1000 的列表
    iw = [*n for t in range(n)]# 建立个 1000*1000 的列表
    w1 = [*n for t in range(n)]# 建立个 1000*1000 的列表
   
    for i in range(n):# 将对角线初始化为1
      w = 1
   
    alpha = 0.001       # 初始化学习率为
   
    for time in range(200):      # 迭代次数最多不超过 200 次
      
      for i in range(m):      # 分离出"样本数目"个样本
            for j in range(n):
                t = np.dot(w, x)
                t = 1 - 2*logistic(t)
                w1 = n_multiply(t,x)# w1 = t*x
            iw = trans_inverse(w)    # iw = w^T^(-1)
            iw = w1 + iw
            w1 = np.add(w1, iw)      # w1 += iw
            w1 = np.dot(w1, alpha)
            w = np.add(w, w1)
      print(time, ":\t", w)
    return w

def mix(A, x,y):
    mix = np.dot(A, np.array())

    for i in range(len(mix)):
      mix = mix + mix

    show_data(mix, None)

    return mix

def decode(w,x):
    ps = np.dot(x, w)
    return ps, ps

if __name__ =="__main__":
    s1 =
    s2 = * 20
    #s1 =
    #s2 = * 2
    show_data(s1, s2)


#################
A = [, ]# 混合矩阵
x = mix(A, s1, s2)   #s1/s2线性加权得到输入数据x
   
x_mean = np.mean(x)# 去均值
for i in range(x.shape):
    for j in range(x.shape):
      x = x - x_mean
    # ica
w = ica(x)
    # 解混
= decode(w, x)
show_data(ps1, ps2)

txxcat 发表于 2020-4-24 17:24:13

70行:show_data(mix, None),调用16行:if all(y)!= None: all(None),报错。
把70行改成:show_data(mix, )

xiaosi4081 发表于 2020-4-24 18:38:05

https://www.cnblogs.com/zhaijiahui/p/8391701.html

xiaosi4081 发表于 2020-4-24 18:39:51

不过是第几行啊

GIAAKK 发表于 2020-4-24 18:42:28

xiaosi4081 发表于 2020-4-24 18:39
不过是第几行啊

16

永恒的蓝色梦想 发表于 2020-4-24 18:43:41

没出问题,正常跑

suchocolate 发表于 2020-4-24 18:45:16

16行
if y:

xiaosi4081 发表于 2020-4-24 18:47:34

GIAAKK 发表于 2020-4-24 18:42
16

我的回复在审核,所以要等等

xiaosi4081 发表于 2020-4-24 18:59:18

xiaosi4081 发表于 2020-4-24 18:47
我的回复在审核,所以要等等

已经过了审核了

GIAAKK 发表于 2020-4-24 20:07:58

xiaosi4081 发表于 2020-4-24 18:38
https://www.cnblogs.com/zhaijiahui/p/8391701.html

理解意思 不太会改{:5_100:}

GIAAKK 发表于 2020-4-24 20:08:41

txxcat 发表于 2020-4-24 19:29
70行:show_data(mix, None),调用16行:if all(y)!= None: all(None),报错。
把70行改成:show_data( ...

最后一个图是空白的 是不是改变意思了啊

GIAAKK 发表于 2020-4-24 20:11:11

txxcat 发表于 2020-4-24 19:29
70行:show_data(mix, None),调用16行:if all(y)!= None: all(None),报错。
把70行改成:show_data( ...

是这样的谢谢谢谢

GIAAKK 发表于 2020-4-24 20:11:59

GIAAKK 发表于 2020-4-24 20:07
理解意思 不太会改

解决了 谢谢哈
页: [1]
查看完整版本: 'NoneType' object is not iterable