python - 在python中调用函数后变量发生变化
问题描述
我最近一直在为 python 中的一个项目编写一些代码,我对从这段代码中得到的输出感到困惑
def sigmoid(input_matrix):
rows = input_matrix.shape[0]
columns = input_matrix.shape[1]
for i in range(0,rows):
for j in range(0,columns):
input_matrix[i,j] = (1 / (1 + math.exp(-(input_matrix[i,j]))))
return input_matrix
def feed_forward(W_L_1 , A_L_0 , B_L_1):
weighted_sum = np.add(np.dot(W_L_1,A_L_0), B_L_1)
activation = sigmoid(weighted_sum)
return [weighted_sum,activation]
a = np.zeros((1,1))
b = feed_forward(a,a,a)
print(b[0])
print(b[1])
当我打印 b[0] 和 b[1] 时,即使 b[0] 应该等于 0,也会给出 0.5 的值。此外,当我放置 '''weighted_sum = np.add(np.dot( W_L_1,A_L_0), B_L_1)''' 在“激活”行之后再次提供正确的结果。就好像“激活”行改变了加权和值的值。想知道是否有人可以对此有所了解,我可以解决这个问题,但对为什么会发生这种情况很感兴趣。谢谢!!
解决方案
在内部sigmoid
,您正在更改作为参数传递的矩阵的值,在这一行中:
input_matrix[i,j] = ...
如果您想防止这种情况发生,请在调用之前创建矩阵的副本sigmoid
,并像这样调用它sigmoid(copy_of_weighted_sum)
:
推荐阅读
- c# - C# log4net 多用途文件日志记录
- mysql - SELECT * FROM 动态检索表名
- elasticsearch - 如何对弹性搜索中的字段求和并移动另一个索引
- javascript - 在单个 HTML 文档中创建不同的页面视图时出现问题?
- go - 与 gRPC 客户端重新连接的正确方法
- reactjs - spotify API 的问题,返回未定义的流派响应,(在成功的初始授权请求后)
- zapier - 支持多个文件的 Zapier 操作
- python - 字典不让我 .get() 给定键
- redux - 如何在 Next.js 中保持 redux 状态而不阻塞 SSR?
- oracle - 具有不同字符集的 Oracle 19 容器数据库