前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动手学深度学习-数据操作

动手学深度学习-数据操作

作者头像
村雨遥
发布2019-09-09 17:18:56
5320
发布2019-09-09 17:18:56
举报
文章被收录于专栏:JavaParkJavaPark

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/github_39655029/article/details/89151587

作为深度学习的基础,我们常会频繁对数据进行操作,以下则是介绍如何对内存中的数据进行常用操作的相关代码;

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/4/9 14:11
# @Author  : cunyu
# @Site    : cunyu1943.github.io
# @File    : dataOperation.py
# @Software: PyCharm


from mxnet import nd

"""
创建NDArray
"""

# 创建行向量
rowX = nd.arange(12)
print(rowX)

# 获取NDArray实例形状
shapeOfRowX = rowX.shape
print(shapeOfRowX)

# 获取NDArray实例元素总数
numOfElement = rowX.size
print(numOfElement)

# 改变行向量形状
newRowX = rowX.reshape((3,4))
print(newRowX)

# 创建元素全为0的张量
tensor0 = nd.zeros((2, 3, 4))
print(tensor0)

# 创建元素均为1的张量
tensor1 = nd.ones((3, 4))
print(tensor1)

# 通过list指定要创建的NDArray中每个元素的值
tensorY = nd.array([[1,3, 4, 9], [6, 3, 4, 5], [0, 8, 9, 7]])
print(tensorY)

# 随机生成NDArray中每个每个元素的值
tensorZ = nd.random.normal(0, 1, shape = (3,4))
print(tensorZ)

"""
运算
"""

# 加法
print(newRowX + tensorY)

# 乘除法
print(newRowX * tensorY)
print(newRowX / tensorY)

# 指数
print(tensorY.exp())
# print(nd.exp(tensorY))

# 矩阵乘法
print(nd.dot(newRowX, tensorY.T))

# 连结
print(nd.concat(newRowX, tensorY, dim=0), nd.concat(newRowX, tensorY, dim=1))

# 使用条件判别式得到元素为0/1的新的NDArray
print(newRowX == tensorY)

# 求和得到只有一个元素的NDArray
print(tensorY.sum())
# print(nd.sum(tensorY))

# 张量变换为Python中的标量
print(newRowX.norm().asscalar())
# print(nd.norm(newRowX).asscalar())

"""
对形状不同的NDArray按元素运算时,触发广播机制:先适当复制元素是得NDArray形状相同后再按照元素运算
"""
A = nd.arange(3).reshape((3,1))
B = nd.arange(2).reshape((1,2))
print('A + B', A + B)

""""
索引
"""

# 截取范围
print(newRowX[1:3])

# 访问单个元素
print(newRowX[2,3])
newRowX[2, 3] = 15
print(newRowX[2,3])
print(newRowX)
newRowX[1:2, :] = 10
print(newRowX)

"""
运算内存开销
"""

# 制造了临时内存开销
before = id(tensorY)
tensorY = newRowX + tensorY
print(id(tensorY) == before)

Z = tensorY.zeros_like()
before = id(Z)
Z[:] = newRowX + tensorY
print(id(Z) == before)

# 避免临时内存开销
nd.elemwise_add(newRowX, tensorY, out=Z)
print(id(Z) == before)

"""
NDArray和NumPy相互变换
"""

import numpy as np

# NumPy转NDArray
P = np.ones((2, 3))
D = nd.array(P)
print(D)

# NDArray转NumPy
print(D.asnumpy())
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档