我试着理解如何处理1D数组(线性代数中的向量)NumPy.
在以下示例中,我生成两个numpy.array a并且b:
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = np.array([[1],[2],[3]]).reshape(1,3)
>>> a.shape
(3,)
>>> b.shape
(1, 3)
Run Code Online (Sandbox Code Playgroud)
对我来说,a和b根据线性代数定义具有相同的形状:1列,3列,但不适合NumPy.
现在,NumPy dot产品:
>>> np.dot(a,a)
14
>>> np.dot(b,a)
array([14])
>>> np.dot(b,b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: objects are not aligned
Run Code Online (Sandbox Code Playgroud)
我有三种不同的输出.
dot(a,a)和之间有什么区别dot(b,a)?为什么点(b,b)不起作用?
我对这些点产品也有一些不同之处:
>>> c = np.ones(9).reshape(3,3)
>>> np.dot(a,c) …Run Code Online (Sandbox Code Playgroud) 我想使用 TensorFlow 2 数据集对象将图像提供给 CNN。我的图像位于 AWS S3 上,但我将在示例中使用来自 Wikipedia 的图像(问题是相同的)。
image_urls = [
'https://upload.wikimedia.org/wikipedia/commons/6/60/Matterhorn_from_Domh%C3%BCtte_-_2.jpg',
'https://upload.wikimedia.org/wikipedia/commons/6/6e/Matterhorn_from_Klein_Matterhorn.jpg',
]
dataset = tf.data.Dataset.from_tensor_slices(image_urls)
def read_image_from_url(url):
img_array = None
with urlopen(url) as request:
img_array = np.asarray(bytearray(request.read()), dtype=np.uint8)
img = cv2.imdecode(img_array, cv2.IMREAD_COLOR)
return cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #as RGB image (cv2 is BGR by default)
Run Code Online (Sandbox Code Playgroud)
当我使用数据集的一个元素测试我的函数时,它可以工作:
url = next(iter(dataset)).numpy().decode('utf-8')
img = read_image_from_url(url)
plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)
但是当我将我的函数映射到数据集以创建一个为图像提供服务的新数据集时,它失败了:
dataset_images = dataset.map(lambda x: read_image_from_url(x.numpy().decode('utf-8')))
AttributeError: in converted code:
<ipython-input-6-e8eb89833196>:2 None *
map_func=lambda x: read_image_from_url(x.numpy().decode('utf-8')),
AttributeError: 'Tensor' object has no attribute 'numpy'
Run Code Online (Sandbox Code Playgroud)
显然,当使用next …