相关文章推荐
完美的消炎药  ·  oracle的异常处理_张立斌的技术博客_5 ...·  1 年前    · 
打篮球的作业本  ·  【转】MongoDB中的多表关联查询、聚合管 ...·  1 年前    · 
稳重的红豆  ·  刷屏的ChatGPT能帮自媒体人写稿吗?我们 ...·  1 年前    · 
体贴的红金鱼  ·  python把hdf转为tif - ...·  1 年前    · 
豪情万千的手链  ·  java算法计算一元一次方程_51CTO博客 ...·  1 年前    · 
Code  ›  keras总结笔记(三)keras模型工作流程概述_keras框架流程图_熊猫小伙的博客
keras 损失函数 张量
https://blog.csdn.net/weixin_42237113/article/details/108425619
神勇威武的西瓜
1 年前
  • 前言
  • 1.keras工作流程
  • 2.keras网络模型定义的2种方法
  • 3.损失函数、评估标准、优化器
  • 4.常用api说明
    • 4.1sequence方法
      • compile
      • fit
      • predict
    • 4.2 网络模型常用模块
      • dense
      • Activation
      • Dropout
      • Flatten
      • Input
      • Reshape
      • Conv2D
      • MaxPooling2D

      使用了keras很久,比较容易上手、非常适合搭建新模型和进行object detect,温故而知新,重新捡起来并且合理总结一下,特此分享与有缘人~~~

      1.keras工作流程

      已经见过一个 Keras 模型的示例,就是 MNIST 的例子。典型的 Keras 工作流程就和那个例子类似。

      (1) 定义训练数据:输入张量和目标张量。
      (2) 定义层组成的网络(或模型),将输入映射到目标。
      (3) 配置学习过程:选择损失函数、优化器和需要监控的指标。
      (4) 调用模型的 fit 方法在训练数据上进行迭代,显示准确率。
      (5) 使用predict预测目标结果
      

      2.keras网络模型定义的2种方法

      (1)定义模型有两种方法:
      一种是使用 Sequential 类(仅用于层的线性堆叠,这是目前最常见的网络架构),
      另一种是函数式 API(functional API,用于层组成的有向无环图,让你可以构建任意形式的架构)。

      一些常见的网络拓扑结构如下:

      双分支(two-branch)网络
      多头(multihead)网络
      Inception 模块
      

      (2)举例:
      一个利用 Sequential 类定义的两层模型(注意,我们向第一层传入了输入数据的预期形状)。

      from keras import models
      model = models.Sequential()
      model.add(layers.Dense(32, activation='relu', input_shape=(784,)))
      model.add(layers.Dense(10, activation='softmax'))
      

      下面是用函数式 API 定义的相同模型。

      from keras import layers
      input_tensor = layers.Input(shape=(784,))
      x = layers.Dense(32, activation='relu')(input_tensor)
      output_tensor = layers.Dense(10, activation='softmax')(x)
      model = models.Model(inputs=input_tensor, outputs=output_tensor)
      

      利用函数式 API,你可以操纵模型处理的数据张量,并将层应用于这个张量,就好像这些层是函数一样。

      3.损失函数、评估标准、优化器

      一旦确定了网络架构,你还需要选择以下两个参数。
      损失函数(目标函数)——在训练过程中需要将其最小化。它能够衡量当前任务是否已成功完成。
      优化器——决定如何基于损失函数对网络进行更新。它执行的是随机梯度下降(SGD)的某个变体。
      评估标准 ------- 对于任何分类问题,你都希望将其设置为 metrics = [‘accuracy’]。评估标准可以是现有的标准的字符串标识符,也可以是自定义的评估标准函数。

      对于分类、回归、序列预测等常见问题,你可以遵循一些简单的指导原则来选择正确的损失函数。
      例如,对于二分类问题,你可以使用二元交叉熵(binary crossentropy)损失函数;
      对于多分类问题,可以用分类交叉熵(categorical crossentropy)损失函数;
      对于回归问题,可以用均方误差(mean-squared error)损失函数;
      对于序列学习问题,可以用联结主义时序分类(CTC,connectionist temporal classification)损失函数,等等。
      只有在面对真正全新的研究问题时,你才需要自主开发目标函数。

      配置学习过程是在编译这一步,你需要指定模型使用的优化器和损失函数,以及训练过程中想要监控的指标。下面是单一损失函数的例子,这也是目前最常见的。

      from keras import optimizers
      model.compile(optimizer=optimizers.RMSprop(lr=0.001),
      loss='mse',metrics=['accuracy'])
      

      最后,学习过程就是通过 fit() 方法将输入数据的 Numpy 数组(和对应的目标数据)传入模型,这一做法与 Scikit-Learn 及其他机器学习库类似。

      model.fit(input_tensor, target_tensor, batch_size=128, epochs=10)
      

      4.常用api说明

      4.1sequence方法

      compile

      compile(self, optimizer, loss, metrics=None, sample_weight_mode=None,weighted_metrics=None, target_tensors=None)

      用于配置训练模型。
      参数
      • optimizer: 字符串(优化器名)或者优化器对象。详见 optimizers。
      • loss: 字符串(目标函数名)或目标函数。详见 losses。如果模型具有多个输出,则可以通过传递损失函数的字典或列表,在每个输出上使用不同的损失。模型将最小化的损失值将
      是所有单个损失的总和。
      • metrics: 在训练和测试期间的模型评估标准。通常你会使用 metrics = [‘accuracy’]。要为多输出模型的不同输出指定不同的评估标准,还可以传递一个字典,如 metrics ={‘output_a’:‘accuracy’}。
      • sample_weight_mode: 如果你需要执行按时间步采样权重(2D 权重),请将其设置为temporal。默认为 None,为采样权重(1D)。如果模型有多个输出,则可以通过传递 mode的字典或列表,以在每个输出上使用不同的 sample_weight_mode。
      • weighted_metrics: 在训练和测试期间,由 sample_weight 或class_weight 评估和加权的度量标准列表。
      • target_tensors: 默认情况下,Keras 将为模型的目标创建一个占位符,在训练过程中将使用目标数据。相反,如果你想使用自己的目标张量(反过来说,Keras 在训练期间不会载入这些目标张量的外部 Numpy 数据),您可以通过 target_tensors 参数指定它们。它应该是单个张量(对于单输出 Sequential 模型)。

      fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None,validation_split=0.0, validation_data=None, shuffle=True, class_weight=None,sample_weight=None, initial_epoch=0,steps_per_epoch=None, validation_steps=None)

      以固定数量的轮次(数据集上的迭代)训练模型。
      参数
      • x: 训练数据的 Numpy 数组。如果模型中的输入层被命名,你也可以传递一个字典,将输入层名称映射到 Numpy 数组。如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,x 可以是 None(默认)。
      • y: 目标(标签)数据的 Numpy 数组。如果模型中的输出层被命名,你也可以传递一个字典,将输出层名称映射到 Numpy 数组。如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,y 可以是 None(默认)。
      • batch_size: 整数或 None。每次提度更新的样本数。如果未指定,默认为 32.
      • epochs: 整数。训练模型迭代轮次。一个轮次是在整个 x 或 y 上的一轮迭代。请注意,与initial_epoch 一起,epochs 被理解为「最终轮次」。模型并不是训练了 epochs 轮,而是到第 epochs 轮停止训练。
      • verbose: 0, 1 或 2。日志显示模式。0 = 安静模式, 1 = 进度条, 2 = 每轮一行。
      • callbacks: 一系列的 keras.callbacks.Callback 实例。一系列可以在训练时使用的回调函数。详见 callbacks。
      • validation_split: 在 0 和 1 之间浮动。用作验证集的训练数据的比例。模型将分出一部分不会被训练的验证数据,并将在每一轮结束时评估这些验证数据的误差和任何其他模型指标。验证数据是混洗之前 x 和 y 数据的最后一部分样本中。
      • validation_data: 元组 (x_val,y_val) 或元组 (x_val,y_val,val_sample_weights),用来评估损失,以及在每轮结束时的任何模型度量指标。模型将不会在这个数据上进行训练。这个参数会覆盖validation_split。
      • shuffle: 布尔值(是否在每轮迭代之前混洗数据)或者字符串 (batch)。batch 是处理 HDF5数据限制的特殊选项,它对一个 batch 内部的数据进行混洗。当 steps_per_epoch 非 None时,这个参数无效。
      • class_weight: 可选的字典,用来映射类索引(整数)到权重(浮点)值,用于加权损失函数(仅在训练期间)。这可能有助于告诉模型「更多关注」来自代表性不足的类的样本。
      • sample_weight: 训练样本的可选 Numpy 权重数组,用于对损失函数进行加权(仅在训练期间)。您可以传递与输入样本长度相同的平坦(1D)Numpy 数组(权重和样本之间的1:1 映射),或者在时序数据的情况下,可以传递尺寸为 (samples, sequence_length)的 2D 数组,以对每个样本的每个时间步施加不同的权重。在这种情况下,你应该确保在compile() 中指定 sample_weight_mode=“temporal”。
      • initial_epoch: 开始训练的轮次(有助于恢复之前的训练)。
      • steps_per_epoch: 在声明一个轮次完成并开始下一个轮次之前的总步数(样品批次)。使用TensorFlow 数据张量等输入张量进行训练时,默认值 None 等于数据集中样本的数量除以batch 的大小,如果无法确定,则为 1。
      • validation_steps: 只有在指定了 steps_per_epoch 时才有用。停止前要验证的总步数(批次样本)。

      返回
      一个 History 对象。其 History.history 属性是连续 epoch 训练损失和评估值,以及验证集损失和评估值的记录(如果适用) 。

      predict

      predict(self, x, batch_size=None, verbose=0, steps=None)

      为输入样本生成输出预测。
      输入样本逐批处理。
      参数
      • x: 输入数据,Numpy 数组。
      • batch_size: 整数。如未指定,默认为 32。
      • verbose: 日志显示模式,0 或 1。
      • steps: 声明预测结束之前的总步数(批次样本)。默认值 None。
      返回
      预测的 Numpy 数组。

      4.2 网络模型常用模块

      dense

      keras.layers.Dense(units, activation=None, use_bias=True,
      kernel_initializer=‘glorot_uniform’, bias_initializer=‘zeros’,
      kernel_regularizer=None, bias_regularizer=None,
      activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

      就是普通的全连接层。
      Dense 实 现 以 下 操 作:output = activation(dot(input, kernel) + bias) 其 中activation 是按逐个元素计算的激活函数,kernel 是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias 为 True 时才有用)。
      • 注意: 如果该层的输入的秩大于 2,那么它首先被展平然后再计算与 kernel 的点乘。

      参数
      • units: 正整数,输出空间维度。
      • activation: 激活函数 (详见 activations)。若不指定,则不使用激活函数 (即,“线性” 激活:a(x) = x)。
      • use_bias: 布尔值,该层是否使用偏置向量。
      • kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。
      • bias_initializer: 偏置向量的初始化器 (see initializers).
      • kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。
      • bias_regularizer: 运用到偏置向的的正则化函数 (详见 regularizer)。
      • activity_regularizer: 运用到层的输出的正则化函数 (它的 “activation”)。(详见 regularizer)。
      • kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。
      • bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。

      输入尺寸:
      nD 张量,尺寸: (batch_size, …, input_dim)。最常见的情况是一个尺寸为
      (batch_size, input_dim) 的 2D 输入。
      输出尺寸:
      nD张量,尺寸: (batch_size, …, units)。例如,对于尺寸为(batch_size, input_dim)的 2D 输入,输出的尺寸为 (batch_size, units)。

      Activation

      keras.layers.Activation(activation)

      将激活函数应用于输出。
      参数
      • activation: 要使用的激活函数的名称 (详见:hyperref[activations]activations),或者选择一个 Theano 或 TensorFlow 操作。
      输入尺寸:
      任意尺寸。当使用此层作为模型中的第一层时,使用参数 input_shape (整数元组,不包括样本数的轴)。
      输出尺寸:
      与输入相同。

      Dropout

      keras.layers.Dropout(rate, noise_shape=None, seed=None)

      将 Dropout 应用于输入。
      Dropout 包括在训练中每次更新时,将输入单元的按比率随机设置为 0,这有助于防止过拟合。

      参数
      • rate: 在 0 和 1 之间浮动。需要丢弃的输入比例。
      • noise_shape: 1D 整数张量,表示将与输入相乘的二进制 dropout 掩层的形状。例如,如果你的输入尺寸为 (batch_size, timesteps, features),然后你希望 dropout 掩层在所有时间步都是一样的,你可以使用 noise_shape=(batch_size, 1, features)。
      • seed: 一个作为随机种子的 Python 整数。
      参考文献
      • Dropout: A Simple Way to Prevent Neural Networks from Overfitting

      Flatten

      keras.layers.Flatten()

      将输入展平。不影响批量大小。
      例

      model = Sequential()
      model.add(Conv2D(64, 3, 3,
      border_mode='same',
      input_shape=(3, 32, 32)))
      # 现在:model.output_shape == (None, 64, 32, 32)
      model.add(Flatten())
      # 现在:model.output_shape == (None, 65536)
      

      Input

      keras.engine.topology.Input()

      Input() 用于实例化 Keras 张量。
      Keras 张量是底层后端 (Theano, TensorFlow or CNTK) 的张量对象,我们增加了一些特性,使
      得能够通过了解模型的输入和输出来构建 Keras 模型。
      例如,如果 a, b 和 c 都是 Keras 张量,那么以下操作是可行的:model = Model(input=[a,
      b], output=c)
      添加的 Keras 属性是:- _keras_shape: 通过 Keras 端的尺寸推理进行传播的整数尺寸元组。

      • _keras_history: 应用于张量的最后一层。整个网络层计算图可以递归地从该层中检索。
        参数
        • shape: 一个尺寸元组(整数),不包含批量大小。A shape tuple (integer), not including the
        batch size. 例如,shape=(32,) 表明期望的输入是按批次的 32 维向量。
        • batch_shape: 一个尺寸元组(整数),包含批量大小。例如,batch_shape=(10, 32) 表明期
        望的输入是 10 个 32 维向量。batch_shape=(None, 32) 表明任意批次大小的 32 维向量。
        • name: 一个可选的层的名称的字符串。在一个模型中应该是唯一的(不可以重用一个名字
        两次)。如未提供,将自动生成。
        • dtype: 输入所期望的数据类型,字符串表示 (float32, float64, int32…)
        • sparse: 一个布尔值,指明需要创建的占位符是否是稀疏的。
        • tensor: 可选的可封装到 Input 层的现有张量。如果设定了,那么这个层将不会创建占位
        符张量。
        返回
        一个张量。
        例
      # 这是 Keras 中的一个逻辑回归
      x = Input(shape=(32,))
      y = Dense(16, activation='softmax')(x)
      model = Model(x, y)
      

      Reshape

      keras.layers.Reshape(target_shape)

      将输入重新调整为特定的尺寸。
      参数
      • target_shape: 目标尺寸。整数元组。不包含表示批量的轴。

      输入尺寸
      任意,尽管输入尺寸中的所有维度必须是固定的。当使用此层作为模型中的第一层时,使用参数 input_shape (整数元组,不包括样本数的轴)。

      输出尺寸
      (batch_size,) + target_shape
      例

      # 作为 Sequential 模型的第一层
      model = Sequential()
      model.add(Reshape((3, 4), input_shape=(12,)))
      # 现在:model.output_shape == (None, 3, 4)
      # 注意: `None` 是批表示的维度
      # 作为 Sequential 模型的中间层
      model.add(Reshape((6, 2)))
      # 现在: model.output_shape == (None, 6, 2)
      # 还支持使用 `-1` 表示维度的尺寸推断
      model.add(Reshape((-1, 2, 2)))
      # 现在: model.output_shape == (None, 3, 2, 2)
      

      Conv2D

      keras.layers.Conv2D(filters, kernel_size, strides=(1, 1), padding=‘valid’,
      data_format=None, dilation_rate=(1, 1), activation=None,
      use_bias=True, kernel_initializer=‘glorot_uniform’,
      bias_initializer=‘zeros’, kernel_regularizer=None,
      bias_regularizer=None, activity_regularizer=None,
      kernel_constraint=None, bias_constraint=None)

      2D 卷积层 (例如对图像的空间卷积)。
      该层创建了一个卷积核,该卷积核对层输入进行卷积,以生成输出张量。如果 use_bias 为True,则会创建一个偏置向量并将其添加到输出中。最后,如果 activation 不是 None,它也会应用于输出。
      当使用该层作为模型第一层时,需要提供 input_shape 参数(整数元组,不包含样本表示的轴) ,例如,input_shape=(128, 128, 3) 表示 128x128 RGB 图像,在data_format=“channels_last” 时。

      参数
      • filters: 整数,输出空间的维度(即卷积中滤波器的输出数量)。
      • kernel_size: 一个整数,或者 2 个整数表示的元组或列表,指明 2D 卷积窗口的宽度和高度。
      可以是一个整数,为所有空间维度指定相同的值。
      • strides: 一个整数,或者 2 个整数表示的元组或列表,指明卷积沿宽度和高度方向的步长。可以是一个整数,为所有空间维度指定相同的值。指定任何 stride 值!= 1 与指定dilation_rate 值!= 1 两者不兼容。
      • padding: “valid” 或 “same” (大小写敏感)。
      • data_format: 字符串,channels_last (默认) 或 channels_first 之一,表示输入中维度的顺序。channels_last 对应输入尺寸为 (batch, height, width, channels),channels_first 对应输入尺寸为 (batch, channels, height, width)。它默认为从Keras 配置文件 ~/.keras/keras.json 中找到的 image_data_format 值。如果你从未设置它,将使用”channels_last”。
      • dilation_rate: 一个整数或 2 个整数的元组或列表,指定膨胀卷积的膨胀率。可以是一个整数,为所有空间维度指定相同的值。当前,指定任何 dilation_rate 值!= 1 与指定 stride值!= 1 两者不兼容。
      • activation: 要使用的激活函数 (详见 activations)。如果你不指定,则不使用激活函数 (即线性激活:a(x) = x)。关于 KERAS 网络层 68
      • use_bias: 布尔值,该层是否使用偏置向量。
      • kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。
      • bias_initializer: 偏置向量的初始化器 (详见 initializers)。
      • kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。
      • bias_regularizer: 运用到偏置向量的正则化函数 (详见 regularizer)。
      • activity_regularizer: 运用到层输出(它的激活值)的正则化函数 (详见 regularizer)。
      • kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。
      • bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。

      输入尺寸
      • 如果 data_format=’channels_first’,输入 4D 张量,尺寸为 (samples, channels, rows,cols)。
      • 如果 data_format=’channels_last’,输入 4D 张量,尺寸为 (samples, rows, cols,channels)。

      输出尺寸
      • 如果 data_format=’channels_first’,输出 4D 张量,尺寸为 (samples, filters, new_rows, new_cols)。
      • 如果data_format=’channels_last’,输出4D张量,尺寸为(samples, new_rows, new_cols,filters)。
      由于填充的原因,rows 和 cols 值可能已更改。

      MaxPooling2D

      keras.layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding=‘valid’,data_format=None)

      对于空域数据的最大池化。

      参数
      • pool_size: 整数,或者 2 个整数元组,(垂直方向,水平方向)缩小比例的因数。(2,2)会
      把输入张量的两个维度都缩小一半。如果只使用一个整数,那么两个维度都会使用同样的
      窗口长度。
      • strides: 整数,整数元组或者是 None。步长值。如果是 None,那么默认值是 pool_size。
      • padding: “valid” 或者 “same” (区分大小写)。
      • data_format: 一个字符串,channels_last (默认值)或者 channels_first。输入张量中的维度顺序。channels_last 代表尺寸是 (batch, height, width, channels) 的输入张量,而 channels_first 代表尺寸是 (batch, channels, height, width) 的输入张量。默认值根据 Keras 配置文件 ~/.keras/keras.json 中的 image_data_format 值来设置。如果还没有设置过,那么默认值就是”channels_last”。

      输入尺寸
      • 如果 data_format=‘channels_last’: 尺寸是 (batch_size, rows, cols, channels)的 4D 张量
      • 如果 data_format=‘channels_first’: 尺寸是 (batch_size, channels, rows, cols)的 4D 张量

      输出尺寸
      • 如 果 data_format=‘channels_last’: 尺 寸 是 (batch_size, pooled_rows,
      pooled_cols, channels) 的 4D 张量
      • 如 果 data_format=‘channels_first’: 尺 寸 是 (batch_size, channels,
      pooled_rows, pooled_cols) 的 4D 张量

      目录前言1.keras工作流程2.keras网络模型定义的2种方法3.损失函数、评估标准、优化器4.常用api说明4.1sequence方法compilefitpredict4.2 网络模型常用模块denseActivationDropoutFlattenInputReshapeConv2DMaxPooling2D前言使用了keras很久,比较容易上手、非常适合搭建新模型和进行object detect,温故而知新,重新捡起来并且合理总结一下,特此分享与有缘人~~~1.keras工作流程已经见过一个 Keras2cpp是一个小型库,用于从C ++应用程序运行经过训练的Keras模型,而无需任何依赖。 设计目标: 与Keras使用TensorFlow后端生成的网络的兼容性。 仅CPU,无GPU。 没有外部依赖项,标准库,C ++ 17。 模型以二进制格式存储在磁盘上,可以快速读取。 模型以连续块的形式存储在内存中,以提高缓存性能。 尚不支持图层和激活类型。 工作正在进行中 支持的Keras层: MaxPooling2D 本地连接一维 本地连接的2D 有线电视新闻网 批量标准化 支持的激活: softplus sigmod 硬sigmod softsign softmax 其他任务: 创建单元测试 创建makefile 代码重构(进行中) 该项目与Keras 2.x(所有版本)和Python 3.x兼容。 python_model.py: import numpy as np 1.将网络层实例的列表传递给 Sequential 的构造器 from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential([ Dense(32, input... 5.进行fit训练 6. -model.summary() 打印网络结构和参数统计 我们用Fashion_mnist数据集来进行10分类 ,包括60000张训练图片和10000张测试图片,每张图片为28*28的分辨率。 1.导入相关的库 import tensorflow as tf #导入tensorflow 2.读取数据集 (x_train, y_train),(x_test, y_t
      https://github.com/pplonski/keras2cpp 1、.nnet中kernel权重值格式fin >> m_kernels_cnt >> m_depth >> m_rows >> m_cols >> m_border_mode 卷积核需要转置! 2、卷积计算公式有误 keras::conv_single_depth_valid "same"还未修正
      keras2cpp 这是一堆将Keras神经网络模型移植到纯C ++中的代码。 神经网络权重和体系结构存储在纯文本文件中,对于图像,输入表示为vector<vector> > > 。 该代码准备支持简单的卷积网络(以MNIST为例),但可以轻松扩展。 仅实现ReLU和Softmax激活。 它正在与Theano后端一起使用。 节省您的网络权重和架构。 使用dump_to_simple_cpp.py脚本将网络结构转储到纯文本文件。 将网络与keras_model.h和keras_model.cc文件中的代码keras_model.h使用-请参见下面的示例。 常见深度学习库mmlab系列安装(mmdetection/mmdetection3d/mmyolo/mmsegmentation/mmocr/mmselfup/mmdeploy/mmrazor) CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/615418965。 常见深度学习库mmlab系列安装(mmdetection/mmdetection3d/mmyolo/mmsegmentation/mmocr/mmselfup/mmdeploy/mmrazor) CSDN-Ada助手: 一定要坚持创作更多高质量博客哦, 小小红包, 以资鼓励, 更多创作活动请看: 新星计划2023: https://marketing.csdn.net/p/1738cda78d47b2ebb920916aab7c3584?utm_source=csdn_ai_ada_redpacket 新星计划2023: https://marketing.csdn.net/p/1738cda78d47b2ebb920916aab7c3584?utm_source=csdn_ai_ada_redpacket 上传ChatGPT/计算机论文等资源,瓜分¥5000元现金: https://blog.csdn.net/VIP_Assistant/article/details/130196121?utm_source=csdn_ai_ada_redpacket 新人首创任务挑战赛: https://marketing.csdn.net/p/90a06697f3eae83aabea1e150f5be8a5?utm_source=csdn_ai_ada_redpacket Microsoft Edge功能测评!: https://activity.csdn.net/creatActivity?id=10403?utm_source=csdn_ai_ada_redpacket 职场解惑讨论会: https://activity.csdn.net/creatActivity?id=10427?utm_source=csdn_ai_ada_redpacket 可持续能源技术真的能改变世界吗?: https://activity.csdn.net/creatActivity?id=10425?utm_source=csdn_ai_ada_redpacket 无效数据,你会怎么处理?: https://activity.csdn.net/creatActivity?id=10423?utm_source=csdn_ai_ada_redpacket 物联网技术正在如何影响我们的生活: https://activity.csdn.net/creatActivity?id=10421?utm_source=csdn_ai_ada_redpacket 生物识别技术能否成为应对安全挑战的绝佳选择?: https://activity.csdn.net/creatActivity?id=10411?utm_source=csdn_ai_ada_redpacket 应届生如何提高职场竞争力: https://activity.csdn.net/creatActivity?id=10409?utm_source=csdn_ai_ada_redpacket 讯飞星火大模型将超越chatgpt?: https://activity.csdn.net/creatActivity?id=10407?utm_source=csdn_ai_ada_redpacket 职场新人备忘录: https://activity.csdn.net/creatActivity?id=10405?utm_source=csdn_ai_ada_redpacket VR vs AR:哪种技术更有潜力改变未来?: https://activity.csdn.net/creatActivity?id=10399?utm_source=csdn_ai_ada_redpacket “裸奔”时代下该如何保护网络隐私: https://activity.csdn.net/creatActivity?id=10401?utm_source=csdn_ai_ada_redpacket 蓝桥杯备赛指南分享: https://activity.csdn.net/creatActivity?id=10317?utm_source=csdn_ai_ada_redpacket
 
推荐文章
完美的消炎药  ·  oracle的异常处理_张立斌的技术博客_51CTO博客
1 年前
打篮球的作业本  ·  【转】MongoDB中的多表关联查询、聚合管道($lookup、$unwind、$match、$project) - 简书
1 年前
稳重的红豆  ·  刷屏的ChatGPT能帮自媒体人写稿吗?我们帮你试了试
1 年前
体贴的红金鱼  ·  python把hdf转为tif - 腾讯云开发者社区 - 腾讯云
1 年前
豪情万千的手链  ·  java算法计算一元一次方程_51CTO博客_java计算一元二次方程的根
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号