我试图创建一个随机数矩阵,但我的解决方案太长,看起来很难看
random_matrix = [[random.random() for e in range(2)] for e in range(3)]
Run Code Online (Sandbox Code Playgroud)
这看起来不错,但在我的实现中它是
weights_h = [[random.random() for e in range(len(inputs[0]))] for e in range(hiden_neurons)]
Run Code Online (Sandbox Code Playgroud)
这是非常难以理解的,不适合一条线.
我将我的神经网络从纯粹的python改为numpy,但现在它的工作速度更慢了.所以我尝试了这两个功能:
def d():
a = [1,2,3,4,5]
b = [10,20,30,40,50]
c = [i*j for i,j in zip(a,b)]
return c
def e():
a = np.array([1,2,3,4,5])
b = np.array([10,20,30,40,50])
c = a*b
return c
Run Code Online (Sandbox Code Playgroud)
timeit d = 1.77135205057
timeit e = 17.2464673758
Numpy慢10倍.为什么会如此以及如何正确使用numpy?
在满足某些条件后,是否值得改变学习率?以及如何以及为什么这样做?例如,net将以高学习率开始,并且在平方误差足够低之后,学习率将下降以获得更好的精度,或者学习率应该增加到跳出局部最小值?它不会导致过度拟合吗?动量怎么样?
我想将函数应用于矩阵中的每一列.我想使用带参数的函数,但我不知道如何做,我尝试的事情以错误结束.
代码我跑了
import numpy as np
M = np.array([[1,2,3,4],
[1,2,3,4],
[1,2,3,4],
[1,2,3,4]])
def my_function(arr, arg="default"):
print arg
return arr
def my_function_allong_axis(M, argument):
return np.apply_along_axis(my_function, axis=0, arr=M, arg=argument)
my_function_allong_axis(M, "something else")
Run Code Online (Sandbox Code Playgroud)
这将产生TypeError:apply_along_axis()得到一个意外的关键字参数'arg'