我想通过计算每个索引组合的值来创建特定大小的3D矩阵.矩阵中的每个值都是符号的.
我到现在为止做了些什么:
import numpy as np
import sympy as sp
var1 = np.arange(1,10,2)
var2 = np.arange(1,10,2)
var3 = np.arange(20,50,5)
myMatrix = np.zeros(shape = (len(var1), len(var2), len(var3)))
t = sp.symbols('t')
for ii in range(len(var1)):
for jj in range(len(var2)):
for kk in range(len(var3)):
myMatrix[ii][jj][kk] = var1[ii] * var2[jj] * var3[kk] * t
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
TypeError:无法将表达式转换为float
据我所知,这是由于结合了numpy和sympy.因此,我试过:
myMatrix = sp.MatrixSymbol('temp', len(var1), len(var2), len(var3))
Run Code Online (Sandbox Code Playgroud)
代替:
myMatrix = np.zeros(shape = (len(var1), len(var2), len(var3)))
Run Code Online (Sandbox Code Playgroud)
并得到一个错误:
TypeError:new()只需4个参数(给定5个)
总而言之,我的问题是:如何创建一个包含内部任何变量的3D矩阵,以便能够在嵌套循环中使用它,这涉及符号计算?
(这是我在这个社区的第一篇文章,所以如果我做错了,请告诉我.)
这是我在此处发布的问题的后续跟踪:在AWS实例g2.2xlarge上使用TensorFlow运行卷积神经网络时出现大图像的内存错误
我使用TensorFlow在Python中构建了一个CNN模型,并在NVIDIA GRID K520 GPU上运行它.它可以在64x64图像下正常运行,但会产生128x128图像的内存错误(即使输入只包含1个图像).
错误说Ran out of memory trying to allocate 2.00GiB.2GiB是我第一个完全连接的层的大小(输入:128*128*2(channels)输出:) 128*128 * 4 bytes = 2.14748 GB = 2.0 GiB.
从这里,我可以看到GRID K520具有8GB = 7.45GiB内存.当我开始运行我的代码时,我也看到了输出:Total memory: 3.94GiB, Free memory: 3.91GiB.
我的问题是,所有这些数字之间的关系是什么:如果GPU上有7.45GiB内存,为什么总内存只有3.94GiB,最重要的是,为什么GPU不能分配2GiB内存,这只占总数的一半以上记忆?(我不是计算机科学家,所以详细的答案很有价值.)
一些更具体的信息,以防它有用:我尝试使用allow_growth和per_process_gpu_memory_fraction.仍然得到内存错误,但也有一些内存统计(如果有人可以向我解释这些数字,真的很感激):
allow_growth = True
Stats:
Limit: 3878682624
InUse: 2148557312
MaxInUse: 2148557312
NumAllocs: 13
MaxAllocSize: 2147483648
allow_growth = False
Stats:
Limit: 3878682624
InUse: 3878682624
MaxInUse: 3878682624
NumAllocs: 13
MaxAllocSize: 3877822976
per_process_gpu_memory_fraction = 0.5
allow_growth …Run Code Online (Sandbox Code Playgroud) 运行以下代码:
import matplotlib.pyplot as plt
import numpy as np
def xon (ton, t):
if ton <= t:
return (t-ton)/5
else:
return 0
vxon = np.vectorize(xon)
t = np.linspace(0, 49, 50)
xontest = vxon(0, t)
plt.plot(t, xontest, '-')
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试绘制ton值时,wchich不同于零,例如:
xontest = vxon(2, t)
Run Code Online (Sandbox Code Playgroud)
该图似乎将所有xon值舍入为整数:
我的代码中有什么导致这种行为?