-
TensorFlow 张量操作基础张量是TensorFlow中的核心数据结构,可以理解为多维数组。张量的秩表示其维度数量,例如标量是0维张量,向量是1维张量,矩阵是2维张量。12345678910import tensorflow as tf # 创建标量scalar = tf.constant(5)# 创建向量vector = tf.constant([1, 2, 3])# 创建矩阵matrix = tf.constant([[1, 2], [3, 4]])# 创建3维张量tensor = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])张量创建方法TensorFlow提供了多种创建张量的方式,包括从Python列表、Numpy数组创建,以及生成特定模式的张量。12345678910111213141516171819# 从Python列表创建tensor_from_list = tf.convert_to_tensor([1, 2, 3]) # 从Numpy数组创建import numpy as nparray = np.array([[1, 2], [3, 4]])tensor_from_np = tf.convert_to_tensor(array) # 生成全零张量zeros = tf.zeros([2, 3]) # 生成全一张量ones = tf.ones([3, 2]) # 生成随机正态分布张量randn = tf.random.normal([2, 2], mean=0.0, stddev=1.0) # 生成均匀分布张量randu = tf.random.uniform([3, 3], minval=0, maxval=1)张量数学运算张量支持各种数学运算,包括逐元素运算和矩阵运算。12345678910111213141516171819202122a = tf.constant([[1, 2], [3, 4]])b = tf.constant([[5, 6], [7, 8]]) # 逐元素加法add = tf.add(a, b) # 逐元素乘法mul = tf.multiply(a, b) # 矩阵乘法matmul = tf.matmul(a, b) # 张量求和sum_all = tf.reduce_sum(a)sum_axis0 = tf.reduce_sum(a, axis=0)sum_axis1 = tf.reduce_sum(a, axis=1) # 张量平均值mean = tf.reduce_mean(a) # 张量最大值max_val = tf.reduce_max(a)张量形状操作改变张量形状是常见的操作,TensorFlow提供了多种形状操作方法。12345678910111213141516tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # 获取张量形状shape = tensor.shape # 改变张量形状reshaped = tf.reshape(tensor, [2, 3]) # 转置张量transposed = tf.transpose(tensor) # 扩展维度expanded = tf.expand_dims(tensor, axis=0) # 压缩维度squeezed = tf.squeeze(expanded)张量索引和切片TensorFlow支持类似Numpy的索引和切片操作。12345678910111213tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 获取单个元素elem = tensor[1, 2] # 获取第2行第3列的元素 # 获取行切片row_slice = tensor[1:, :] # 获取第2行及以后的所有行 # 获取列切片col_slice = tensor[:, 1] # 获取第2列 # 使用步长切片strided_slice = tensor[::2, ::2] # 每隔2个元素取一个张量广播机制TensorFlow支持广播机制,允许不同形状的张量进行运算。12345a = tf.constant([[1, 2, 3]]) # 形状(1,3)b = tf.constant([[4], [5], [6]]) # 形状(3,1) # 广播加法c = a + b # 结果形状(3,3)张量聚合操作TensorFlow提供了多种聚合操作函数。12345678910111213tensor = tf.constant([[1, 2, 3], [4, 5, 6]]) # 沿轴0求和sum0 = tf.reduce_sum(tensor, axis=0) # [5,7,9] # 沿轴1求最大值max1 = tf.reduce_max(tensor, axis=1) # [3,6] # 计算逻辑与logical = tf.reduce_all(tensor > 3) # False # 计算均值mean = tf.reduce_mean(tensor) # 3.5张量拼接与分割TensorFlow支持张量的拼接和分割操作。123456789101112a = tf.constant([[1, 2], [3, 4]])b = tf.constant([[5, 6], [7, 8]]) # 沿轴0拼接concat0 = tf.concat([a, b], axis=0) # 沿轴1拼接concat1 = tf.concat([a, b], axis=1) # 张量分割split0 = tf.split(a, num_or_size_splits=2, axis=0)split1 = tf.split(a, num_or_size_splits=[1, 1], axis=1)张量排序操作TensorFlow提供了排序和top-k操作。12345678910tensor = tf.constant([[3, 1, 4], [1, 5, 9]]) # 排序sorted_values, sorted_indices = tf.sort(tensor, direction='DESCENDING') # argsortargsort = tf.argsort(tensor) # top-ktop_k_values, top_k_indices = tf.math.top_k(tensor, k=2)张量高级操作TensorFlow还提供了一些高级张量操作。1234567891011# 张量收集tensor = tf.constant([[0, 1, 2], [3, 4, 5]])indices = tf.constant([0, 1])gathered = tf.gather(tensor, indices) # 收集第0行和第1行 # 张量分散updates = tf.constant([10, 20])scattered = tf.tensor_scatter_nd_update(tensor, [[0, 0], [1, 1]], updates) # 张量条件操作cond = tf.where(tensor > 3, tensor, tf.zeros_like(tensor)) # 大于3保留原值,否则设为0张量梯度计算TensorFlow支持自动微分,可以计算张量操作的梯度。1234x = tf.Variable(3.0)with tf.GradientTape() as tape: y = x ** 2 + 2 * x + 1dy_dx = tape.gradient(y, x) # 2x + 2 = 8 张量与Numpy互操作TensorFlow张量和Numpy数组可以方便地相互转换。123456# 张量转Numpy数组tensor = tf.constant([[1, 2], [3, 4]])numpy_array = tensor.numpy() # Numpy数组转张量new_tensor = tf.convert_to_tensor(numpy_array)
-
非常荣幸参加此次HCCDE 云架构的培训学习,E级的云架构的知识点比P提升了很多,如果说IE是重视理论知识,对华为云产品,最佳实践有个深入的了解的话,那么E覆盖的知识点从需求对接,开发前中后的注意事项,敏捷的流程,华为云高阶服务(CCE,CCI,EI,EG,FG,ROMA,CSE等),由浅入深,让学员学习到比IE更完整,更立体的知识体系,同时注重实操,利用RFS自动化购买云服务,搭建集群,考核了学员对json,对华为云各个产品考核的很深,需要同时注意微观的产品细节,宏观的架构及安全,掌握后,对目前正在交付的项目有非常大的帮助
-
介绍TensorFlow是一个开源的机器学习框架,是由Google开发的,用于构建和训练机器学习模型的工具库。它提供了丰富的功能和易于使用的接口,可用于各种机器学习任务,如图像识别、自然语言处理、推荐系统等。TensorFlow的基本概念包括:Tensor:是TensorFlow中的基本数据结构,可以理解为多维数组。它可以是一个标量(0维)、向量(1维)、矩阵(2维)或更高维的数组。计算图:TensorFlow使用计算图来描述计算过程,即将操作和数据组成的节点连接起来形成一个有向无环图。计算图定义了操作的顺序和依赖关系。变量:变量是在模型训练过程中需要被优化的参数。在TensorFlow中,通过tf.Variable()来定义变量。模型:模型是机器学习任务的核心部分,它由一系列操作和变量组成。在TensorFlow中,我们可以通过定义计算图来创建模型。一、TF使用场景TensorFlow的使用场景非常丰富,适用于各种机器学习任务。以下是一些常见的使用场景:图像识别:TensorFlow提供了一些预训练好的模型,如Inception、ResNet等,可以用于图像分类、目标检测和图像生成等任务。自然语言处理:TensorFlow提供了一些预训练好的模型,如BERT、GPT等,可以用于文本分类、情感分析和机器翻译等任务。推荐系统:TensorFlow可以用于构建推荐系统,通过分析用户的历史行为来预测用户可能喜欢的物品。强化学习:TensorFlow提供了一些强化学习的工具和算法,可以用于训练智能体从环境中学习并做出决策。二、与PyTorch对比TensorFlow和PyTorch是两个流行的深度学习框架。它们在设计哲学、编程模型和部分功能方面有一些差异。设计哲学:TensorFlow:TensorFlow是一个符号式编程框架,它使用静态计算图来定义和运行计算。用户首先定义计算图,然后在会话中执行计算。这种设计可以优化计算图,并提供高度的可移植性和分布式计算支持。PyTorch:PyTorch是一个动态图框架,它使用动态计算图来定义和运行计算。用户可以按照需要随时修改计算图,这使得调试和编写代码更加直观和灵活。编程模型:TensorFlow:TensorFlow使用基于声明式编程的API。用户需要显式地定义计算图,并通过会话执行计算,可以在训练和推理阶段使用不同的会话配置。PyTorch:PyTorch使用一种类似于Python的命令式编程风格,让用户可以直观地编写代码,调试和测试模型更加方便。用户可以直接在Python中使用标准的控制流程和变量操作。功能和生态系统:TensorFlow:TensorFlow具有较为完整的生态系统,提供了许多高级功能和工具,如TensorBoard可视化、分布式训练、模型部署等。它还有一个丰富的模型仓库(TensorFlow Hub)和模型优化工具(TensorFlow Lite)。PyTorch:PyTorch相对于TensorFlow而言功能相对简单,它更注重提供灵活性和易用性。PyTorch的生态系统也在不断扩大,但相对TensorFlow而言较为小众。TensorFlow在分布式训练和生产环境部署方面具有优势,适用于大规模的深度学习应用;而PyTorch在研究和实验中更受欢迎,更灵活易用。在选择使用哪个框架时,可以考虑项目需求和个人喜好。三、示例TensorFlow是一个用于机器学习和深度学习的开源框架,下面是TensorFlow的安装和使用教程:安装TensorFlow1)在Python环境中安装TensorFlow前,先确保已安装了Python和pip包管理工具。2)打开终端或命令提示符,运行以下命令安装TensorFlow:pip install tensorflow3)如果你使用的是GPU版本的TensorFlow,可以运行以下命令安装:pip install tensorflow-gpu导入TensorFlow 在Python脚本中,可以使用以下语句导入TensorFlow:import tensorflow as tf使用TensorFlow1)定义计算图 TensorFlow使用计算图来表示计算过程,首先需要定义一个计算图。例如,下面的代码定义了一个简单的计算图来加法运算:import tensorflow as tf # 定义计算图 a = tf.constant(2) b = tf.constant(3) c = tf.add(a, b)2)运行计算图 在TensorFlow中,需要创建一个会话(Session)来运行计算图。会话负责分配资源和执行计算。import tensorflow as tf # 定义计算图 a = tf.constant(2) b = tf.constant(3) c = tf.add(a, b) # 创建会话并运行计算图 with tf.Session() as sess: result = sess.run(c) print(result)3)TensorFlow中的变量和占位符 变量(Variable)用于存储模型的参数,占位符(Placeholder)用于接收外部输入数据。例如,下面的代码定义了一个变量和一个占位符:import tensorflow as tf # 定义变量和占位符 W = tf.Variable(tf.random_normal([2, 3])) X = tf.placeholder(tf.float32, [None, 2]) # 运行计算图 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) result = sess.run(W, feed_dict={X: [[1, 2], [3, 4]]}) print(result)4)TensorFlow中的模型训练 TensorFlow提供了各种优化算法和损失函数来训练模型。例如,下面的代码定义了一个简单的线性回归模型,并使用梯度下降算法进行训练:import tensorflow as tf # 定义模型 X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) W = tf.Variable(tf.random_normal([1])) b = tf.Variable(tf.random_normal([1])) pred = tf.add(tf.multiply(X, W), b) # 定义损失函数和优化算法 loss = tf.reduce_mean(tf.square(pred - Y)) optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss) # 训练模型 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for epoch in range(100): _, l = sess.run([optimizer, loss], feed_dict={X: [1, 2, 3, 4], Y: [2, 4, 6, 8]}) print(f'Epoch {epoch + 1}: loss = {l}') # 使用训练好的模型进行预测 result = sess.run(pred, feed_dict={X: [5, 6, 7, 8]}) print(result)
-
介绍TensorFlow是一个开源的机器学习框架,是由Google开发的,用于构建和训练机器学习模型的工具库。它提供了丰富的功能和易于使用的接口,可用于各种机器学习任务,如图像识别、自然语言处理、推荐系统等。TensorFlow的基本概念包括:Tensor:是TensorFlow中的基本数据结构,可以理解为多维数组。它可以是一个标量(0维)、向量(1维)、矩阵(2维)或更高维的数组。计算图:TensorFlow使用计算图来描述计算过程,即将操作和数据组成的节点连接起来形成一个有向无环图。计算图定义了操作的顺序和依赖关系。变量:变量是在模型训练过程中需要被优化的参数。在TensorFlow中,通过tf.Variable()来定义变量。模型:模型是机器学习任务的核心部分,它由一系列操作和变量组成。在TensorFlow中,我们可以通过定义计算图来创建模型。一、TF使用场景TensorFlow的使用场景非常丰富,适用于各种机器学习任务。以下是一些常见的使用场景:图像识别:TensorFlow提供了一些预训练好的模型,如Inception、ResNet等,可以用于图像分类、目标检测和图像生成等任务。自然语言处理:TensorFlow提供了一些预训练好的模型,如BERT、GPT等,可以用于文本分类、情感分析和机器翻译等任务。推荐系统:TensorFlow可以用于构建推荐系统,通过分析用户的历史行为来预测用户可能喜欢的物品。强化学习:TensorFlow提供了一些强化学习的工具和算法,可以用于训练智能体从环境中学习并做出决策。二、与PyTorch对比TensorFlow和PyTorch是两个流行的深度学习框架。它们在设计哲学、编程模型和部分功能方面有一些差异。设计哲学:TensorFlow:TensorFlow是一个符号式编程框架,它使用静态计算图来定义和运行计算。用户首先定义计算图,然后在会话中执行计算。这种设计可以优化计算图,并提供高度的可移植性和分布式计算支持。PyTorch:PyTorch是一个动态图框架,它使用动态计算图来定义和运行计算。用户可以按照需要随时修改计算图,这使得调试和编写代码更加直观和灵活。编程模型:TensorFlow:TensorFlow使用基于声明式编程的API。用户需要显式地定义计算图,并通过会话执行计算,可以在训练和推理阶段使用不同的会话配置。PyTorch:PyTorch使用一种类似于Python的命令式编程风格,让用户可以直观地编写代码,调试和测试模型更加方便。用户可以直接在Python中使用标准的控制流程和变量操作。功能和生态系统:TensorFlow:TensorFlow具有较为完整的生态系统,提供了许多高级功能和工具,如TensorBoard可视化、分布式训练、模型部署等。它还有一个丰富的模型仓库(TensorFlow Hub)和模型优化工具(TensorFlow Lite)。PyTorch:PyTorch相对于TensorFlow而言功能相对简单,它更注重提供灵活性和易用性。PyTorch的生态系统也在不断扩大,但相对TensorFlow而言较为小众。TensorFlow在分布式训练和生产环境部署方面具有优势,适用于大规模的深度学习应用;而PyTorch在研究和实验中更受欢迎,更灵活易用。在选择使用哪个框架时,可以考虑项目需求和个人喜好。三、示例TensorFlow是一个用于机器学习和深度学习的开源框架,下面是TensorFlow的安装和使用教程:安装TensorFlow1)在Python环境中安装TensorFlow前,先确保已安装了Python和pip包管理工具。2)打开终端或命令提示符,运行以下命令安装TensorFlow:pip install tensorflow3)如果你使用的是GPU版本的TensorFlow,可以运行以下命令安装:pip install tensorflow-gpu导入TensorFlow 在Python脚本中,可以使用以下语句导入TensorFlow:import tensorflow as tf使用TensorFlow1)定义计算图 TensorFlow使用计算图来表示计算过程,首先需要定义一个计算图。例如,下面的代码定义了一个简单的计算图来加法运算:import tensorflow as tf # 定义计算图 a = tf.constant(2) b = tf.constant(3) c = tf.add(a, b)2)运行计算图 在TensorFlow中,需要创建一个会话(Session)来运行计算图。会话负责分配资源和执行计算。import tensorflow as tf # 定义计算图 a = tf.constant(2) b = tf.constant(3) c = tf.add(a, b) # 创建会话并运行计算图 with tf.Session() as sess: result = sess.run(c) print(result)3)TensorFlow中的变量和占位符 变量(Variable)用于存储模型的参数,占位符(Placeholder)用于接收外部输入数据。例如,下面的代码定义了一个变量和一个占位符:import tensorflow as tf # 定义变量和占位符 W = tf.Variable(tf.random_normal([2, 3])) X = tf.placeholder(tf.float32, [None, 2]) # 运行计算图 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) result = sess.run(W, feed_dict={X: [[1, 2], [3, 4]]}) print(result)4)TensorFlow中的模型训练 TensorFlow提供了各种优化算法和损失函数来训练模型。例如,下面的代码定义了一个简单的线性回归模型,并使用梯度下降算法进行训练:import tensorflow as tf # 定义模型 X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) W = tf.Variable(tf.random_normal([1])) b = tf.Variable(tf.random_normal([1])) pred = tf.add(tf.multiply(X, W), b) # 定义损失函数和优化算法 loss = tf.reduce_mean(tf.square(pred - Y)) optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss) # 训练模型 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for epoch in range(100): _, l = sess.run([optimizer, loss], feed_dict={X: [1, 2, 3, 4], Y: [2, 4, 6, 8]}) print(f'Epoch {epoch + 1}: loss = {l}') # 使用训练好的模型进行预测 result = sess.run(pred, feed_dict={X: [5, 6, 7, 8]}) print(result)
-
Transformer是当下最先进的深度学习架构之一,它被广泛应用与自然语言处理领域和视觉领域。并且替代了以前的循环神经网络(RNN和LSTM),并且以此为基础衍生了诸如BERT、GPT-3等知名网络架构。本文将介绍如何使用TensorFlow原生API从零实现Transformer多头自注意力机制,并在IMDB数据集上验证网络的性能,模型的训练结果如下:TensorFlow极简代码实现可以参考Notebook:
-
Generator的使用:直接读取图像数据:train_generator=ImageDataGenerator(rescale=1./255)test_generator=ImageDataGenerator(rescale=1./255)train_data=train_generator.flow_from_directory( "./cats_and_dogs_filtered/train",batch_size=20,target_size=(64,64),shuffle=True,class_mode='binary')test_data=test_generator.flow_from_directory( "./cats_and_dogs_filtered/validation",batch_size=1000,target_size=(64,64),shuffle=False,class_mode='binary')创建模型:model=tf.keras.models.Sequential([ tf.keras.layers.Conv2D(64,3,activation='relu',input_shape=(64,64,3)), tf.keras.layers.MaxPooling2D(3,3), tf.keras.layers.Conv2D(128,3,activation='relu'), tf.keras.layers.MaxPooling2D(3,3), tf.keras.layers.Flatten(), tf.keras.layers.Dense(512,activation='relu',kernel_initializer='random_normal',kernel_regularizer=tf.keras.regularizers.l2(0.01)), tf.keras.layers.Dense(256,activation='relu',kernel_initializer='random_normal',kernel_regularizer=tf.keras.regularizers.l2(0.01)), tf.keras.layers.Dense(1,activation='sigmoid',kernel_initializer='random_normal',kernel_regularizer=tf.keras.regularizers.l2(0.01))])model.summary()model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-5), loss=tf.keras.losses.BinaryCrossentropy(), metrics=["Accuracy"])model.fit_generator(train_data,steps_per_epoch=100,epochs=200,validation_data=test_data,validation_steps=1,)读取mnist数据:x_test , y_test = loadlocal_mnist( images_path='D:\\Python\\MNIST_data\\t10k-images.idx3-ubyte', labels_path='D:\\Python\\MNIST_data\\t10k-labels.idx1-ubyte')x_train, y_train = loadlocal_mnist( images_path='D:\\Python\\MNIST_data\\train-images.idx3-ubyte', labels_path='D:\\Python\\MNIST_data\\train-labels.idx1-ubyte')
-
镜像:tensorflow1.15-cann5.1.0-py3.7-euler2.8.3规格:Ascend: 1*Ascend910|ARM: 24核 96GB参考Step1 在Notebook中拷贝模型包_AI开发平台ModelArts_镜像管理_使用自定义镜像创建AI应用(推理部署)_无需构建直接在开发环境中调试并保存镜像用于推理_华为云 (huaweicloud.com)调试个人tensorflow的SavedModel格式模型执行run.sh后,发现模型被加载内存中,调用npu-smi info发现没有任何占用,HBM为0%,没有使用910。请问这是哪里出现了异常,有什么调试的方向.......?
-
pb转rknn脚本:https://developer.huaweicloud.com/develop/aigallery/notebook/detail?id=a0127cce-28ac-49e5-911a-d2f82173da95inference_model/frozen_inference_graph.pbW load_tensorflow: Catch exception when loading tensorflow model: inference_model/frozen_inference_graph.pb! W load_tensorflow: Make sure that the tensorflow version of 'inference_model/frozen_inference_graph.pb' is consistent with the installed tensorflow version '2.6.2'! E load_tensorflow: Traceback (most recent call last): E load_tensorflow: File "rknn/api/rknn_base.py", line 1042, in rknn.api.rknn_base.RKNNBase.load_tensorflow E load_tensorflow: File "rknn/api/rknn_base.py", line 575, in rknn.api.rknn_base.RKNNBase._create_ir_and_inputs_meta E load_tensorflow: File "rknn/api/ir_graph.py", line 44, in rknn.api.ir_graph.IRGraph.__init__ E load_tensorflow: File "rknn/api/ir_graph.py", line 343, in rknn.api.ir_graph.IRGraph.rebuild E load_tensorflow: File "rknn/api/ir_graph.py", line 185, in rknn.api.ir_graph.IRGraph._clean_model E load_tensorflow: File "rknn/api/ir_graph.py", line 93, in rknn.api.ir_graph.IRGraph.infer_shapes E load_tensorflow: File "/home/ma-user/anaconda3/envs/py36/lib/python3.6/site-packages/onnx/checker.py", line 104, in check_model E load_tensorflow: C.check_model(protobuf_string) E load_tensorflow: onnx.onnx_cpp2py_export.checker.ValidationError: Nodes in a graph must be topologically sorted, however input 'Preprocessor/map/while/ResizeImage/stack_1:0' of node: E load_tensorflow: name: sub_graph_ending_node_Identity__20 OpType: Identity E load_tensorflow: is not output of any previous nodes. E load_tensorflow: ==> Context: Bad node spec for node. Name: generic_loop_Loop__33 OpType: Looponnx2tflite报错:
-
由于.pb直接转换rknn失败,想先转成.tflite,又遇到了如下问题:F tensorflow/lite/toco/tooling_util.cc:2277] Check failed: array.data_type == array.final_data_type Array "image_tensor" has mis-matching actual and final data types (data_type=uint8, final_data_type=float). Fatal Python error: Aborted转换脚本:https://developer.huaweicloud.com/develop/aigallery/notebook/detail?id=a6ab86f1-8767-41ee-b1a2-28e58f62c43d运行环境:tensorflow 1.15
-
按照流程装了运行环境,报错如图
-
ACGAN论文:Conditional Image Synthesis with Auxiliary Classifier GANs使用标签的数据集应用于生成对抗网络可以增强现有的生成模型,并形成两种优化思路。cGAN使用了辅助的标签信息来增强原始GAN,对生成器和判别器都使用标签数据进行训练,从而实现模型具备产生特定条件数据的能力。SGAN的结构来利用辅助标签信息(少量标签),利用判别器或者分类器的末端重建标签信息。 ACGAN则是结合以上两种思路对GAN进行优化。ACGAN目标函数:对于生成器来说有两个输入,一个是标签的分类数据c,另一个是随机数据z,得到生成数据为 ; 对于判别器分别要判断数据源是否为真实数据的概率分布 ,以及数据源对于分类标签的概率分布ACGAN的目标函数包含两部分: 第一部分 是面向数据真实与否的代价函数 第二部分 则是数据分类准确性的代价函数。在优化过程中希望判别器D能否使得 + 尽可能最大,而生成器G使得 - 尽可能最大; 简而言之是希望判别器能够尽可能区分真实数据和生成数据并且能有效对数据进行分类,对生成器来说希望生成数据被尽可能认为是真实数据且数据都能够被有效分类。1.本案例使用框架:TensorFlow 1.13.12.本案例使用硬件:GPU: 1*NVIDIA-V100NV32(32GB) | CPU: 8 核 64GB3.运行代码方法: 点击本页面顶部菜单栏的三角形运行按钮或按Ctrl+Enter键 运行每个方块中的代码4.JupyterLab的详细用法: 请参考《ModelAtrs JupyterLab使用指导》5.碰到问题的解决办法: 请参考《ModelAtrs JupyterLab常见问题解决办法》1.下载模型和代码import os!wget https://obs-aigallery-zc.obs.cn-north-4.myhuaweicloud.com/algorithm/ACGAN.zip# 解压缩os.system('unzip ACGAN.zip -d ./')2.模型训练2.1加载依赖库root_path = './ACGAN/'os.chdir(root_path)import osfrom main import mainfrom ACGAN import ACGANfrom tools import checkFolderimport tensorflow as tfimport argparseimport numpy as np2.2设置参数def parse_args(): note = "ACGAN Frame Constructed With Tensorflow" parser = argparse.ArgumentParser(description=note) parser.add_argument("--epoch",type=int,default=251,help="训练轮数") parser.add_argument("--batchSize",type=int,default=64,help="batch的大小") parser.add_argument("--codeSize",type=int,default=62,help="输入编码向量的维度") parser.add_argument("--checkpointDir",type=str,default="./checkpoint",help="检查点保存目录") parser.add_argument("--resultDir",type=str,default="./result",help="训练过程中,中间生成结果的目录") parser.add_argument("--logDir",type=str,default="./log",help="训练日志目录") parser.add_argument("--mode",type=str,default="train",help="模式: train / infer") parser.add_argument("--hairStyle",type=str,default="orange hair",help="你想要生成的动漫头像的头发颜色") parser.add_argument("--eyeStyle",type=str,default="gray eyes",help="你想要生成的动漫头像的眼睛颜色") parser.add_argument("--dataSource",type=str,default='./extra_data/images/',help="训练集路径") args, unknown= parser.parse_known_args() checkFolder(args.checkpointDir) checkFolder(args.resultDir) checkFolder(args.logDir) assert args.epoch>=1 assert args.batchSize>=1 assert args.codeSize>=1 return argsargs =parse_args()2.3开始训练with tf.Session() as sess : myGAN = ACGAN(sess,args.epoch,args.batchSize,args.codeSize,\ args.dataSource,args.checkpointDir,args.resultDir,args.logDir,args.mode,\ 64,64,3) if myGAN is None: print("创建GAN网络失败") exit(0) if args.mode=='train' : myGAN.buildNet() print("进入训练模式") myGAN.train() print("Done")开始加载数据集!images.shape: (3000, 64, 64, 3)labels.shape: (3000, 23)Loading images to numpy array...Random shuffling images and labels...[Tip 1] Normalize the images between -1 and 1.数据集加载成功!numOfBatches : 46网络实例化:WARNING:tensorflow:From /home/ma-user/anaconda3/envs/TensorFlow-1.13.1/lib/python3.6/site-packages/tensorflow/python/ops/tensor_array_ops.py:162: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.Instructions for updating:Colocations handled automatically by placer.WARNING:tensorflow:From /home/ma-user/anaconda3/envs/TensorFlow-1.13.1/lib/python3.6/site-packages/tensorflow/contrib/layers/python/layers/layers.py:1624: flatten (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.Instructions for updating:Use keras.layers.flatten instead.WARNING:tensorflow:From /home/ma-user/work/ACGAN/ACGAN.py:167: batch_normalization (from tensorflow.python.layers.normalization) is deprecated and will be removed in a future version.Instructions for updating:Use keras.layers.batch_normalization instead.已构建 Loss for Discriminator已构建 Loss for Generator# size of dVars : 55# size of gVars : 148WARNING:tensorflow:From /home/ma-user/anaconda3/envs/TensorFlow-1.13.1/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.Instructions for updating:Use tf.cast instead.已构建优化器已构造预测器网络实例化成功!进入训练模式开始配置训练环境!模型将会被加载 : ./checkpoint/ACGANWARNING:tensorflow:From /home/ma-user/anaconda3/envs/TensorFlow-1.13.1/lib/python3.6/site-packages/tensorflow/python/training/saver.py:1266: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.Instructions for updating:Use standard file APIs to check for files with this prefix.INFO:tensorflow:Restoring parameters from ./checkpoint/ACGAN/ACGAN.model-251MODEL NAME : ACGAN.model-251模型加载成功 : ACGAN.model-251加载成功生成模型结果预览训练开始!~~~~~~~~~~~~~~~~~~~~~~~~251 251Done3.测试模型修改参数从训练模式为推理模式args.mode ='infer'从标签里选择你想要生成的头像的头发和眼睛,只能从这两个列表里选择hair_dict = ['orange hair', 'white hair', 'aqua hair', 'gray hair', 'green hair', 'red hair', 'purple hair', 'pink hair', 'blue hair', 'black hair', 'brown hair', 'blonde hair']eye_dict = [ 'gray eyes', 'black eyes', 'orange eyes', 'pink eyes', 'yellow eyes', 'aqua eyes', 'purple eyes', 'green eyes', 'brown eyes', 'red eyes', 'blue eyes']# 选择了黄头发和灰眼睛args.hairStyle = 'orange hair'args.eyeStyle = 'gray eyes'构造预测器tf.reset_default_graph()with tf.Session() as sess : myGAN1 = ACGAN(sess,args.epoch,args.batchSize,args.codeSize,\ args.dataSource,args.checkpointDir,args.resultDir,args.logDir,args.mode,\ 64,64,3) if myGAN1 is None: print("创建GAN网络失败") exit(0) if args.mode=='infer' : myGAN1.buildForInfer() tag_dict = ['orange hair', 'white hair', 'aqua hair', 'gray hair', 'green hair', 'red hair', 'purple hair', 'pink hair', 'blue hair', 'black hair', 'brown hair', 'blonde hair','gray eyes', 'black eyes', 'orange eyes', 'pink eyes', 'yellow eyes','aqua eyes', 'purple eyes', 'green eyes', 'brown eyes', 'red eyes','blue eyes'] tag = np.zeros((64,23)) feature = args.hairStyle+" AND "+ args.eyeStyle for j in range(25): for i in range(len(tag_dict)): if tag_dict[i] in feature: tag[j][i] = 1 myGAN1.infer(tag,feature) print("Generate : "+feature)模型将会被加载 : ./checkpoint/ACGANINFO:tensorflow:Restoring parameters from ./checkpoint/ACGAN/ACGAN.model-251MODEL NAME : ACGAN.model-251模型加载成功 : ACGAN.model-251已构造预测器Generate : orange hair AND gray eyes开始生成黄色头发,灰色眼睛的动漫头像存在生成不了正确头像的情况import matplotlib.pyplot as pltfrom PIL import Imagefeature = args.hairStyle+" AND "+ args.eyeStyleresultPath = './samples/' + feature + '.png' #确定保存路径img = Image.open(resultPath).convert('RGB')plt.figure(1)plt.imshow(img)plt.show()
-
我下载了社区版的x86_64的安装包,但不知道如何安装。我用的是windows系统,没有什么命令行代码经验。谢谢各位!
-
例如a = Tensor([1]),想让b = 1,也就是取到只有一个元素的Tensor变量中的那个值,并以单独的数字的形式输出,请问在tik方式开发自定义算子中如何通过函数实现?Pytorch中可以通过a.item()取得,但tik中似乎没有item()函数。
-
MindStudio版本: MindStudio 5.0.RC2安装环境: Win10 / LinuxCANN版本:CANN 5.1.RC2
-
《AutoTune自动调优》教程链接如下https://www.hiascend.com/document/detail/zh/canncommercial/51RC2/modeldev/tfmigr1/tfmigr_mprtg_0031.html文档中写的是通过优化算子调度,来提高性能,实操后发现,性能提升有限,但是精度提升较大。未开启 batch 1100 | examples/s: 25.52 | loss: 1.13622 | time elapsed: 0.15h | time left: 24.25h开 启 batch 1100 | examples/s: 30.52 | loss: 1.13622 | time elapsed: 0.15h | time left: 24.25h但是精度提升较大。疑问点:1、华为昇腾的《AutoTune自动调优》也是基于TVM的Auto Tune吗?2、Auto Tune的优化,会一定程度上优化精度吗?
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签