【Tensorflow】numpy np.select()

本文介绍了np.select函数的使用方法。该函数接收condlist(条件列表,元素为bool数组)、choicelist(列表,数组元素)和default(默认值)三个参数,condlist和choicelist长度需一致,会按条件进行元素选择,还给出了相关示例。

np.select(condlist, choicelist, default=0)

condlist:条件列表,元素是bool数组
choicelist:列表,数组元素
default:当所有条件都不满足时,用default值填上。

condlist, choicelist的长度必须一致,每一个条件都要进行一次元素选择或者操作。

举例:

arr = np.arange(9).reshape(3,3)
conds = [arr < 3, 6 < arr]
np.select(condlist=conds, choicelist=[arr, arr*2])
array([[ 0,  1,  2],
       [ 0,  0,  0],
       [ 0, 14, 16]])
  • 通俗讲,condlist是两个bool mask,choicelist是与bool mask形状相同的数组。正常情况下,condlist中所有的数组True与False应该是互补的,共同组成形状。但是,也可以重复,这时就以第一个True条件为准,如下:
conds = [arr < 8, 6 < arr]
np.select(condlist=conds, choicelist=[arr, arr*2])
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7, 16]])
  • condlist和choicelist中出现的数组可以不是同一个数组,但是。他们的形状必须形同。
arr = np.arange(9).reshape(3,3)
arr2 = np.arange(10,19).reshape(3,3)
conds = [arr < 3, 6 < arr]
np.select(condlist=conds, choicelist=[arr2, arr2*2])
array([[10, 11, 12],
       [ 0,  0,  0],
       [ 0, 34, 36]])

 

using Tensorflow; using Tensorflow.NumPy; using Tensorflow.Keras.Layers; using Tensorflow.Keras.Engine; using static Tensorflow.Binding; using static Tensorflow.KerasApi; using static Tensorflow.Keras.Regularizers; #region 安装包版本号 //Keras.NET 3.8.5 //numsharp 0.30.0 //TensorFlow.NET 0.150.0 //SciSharp.TensorFlow.Redist 2.16.0 //TensorFlow.Keras 0.15.0 namespace DNN_Keras { class Program { static void Main() { string csvPath = @"D:\编程软件系列\VS2022社区版\文件\DNN_Keras\数据\SuperbigNumberA.csv"; var (X_train, Y_train) = LoadCSVData(csvPath); var dataset = tf.data.Dataset.from_tensor_slices(X_train, Y_train) .shuffle(buffer_size: (int)X_train.shape[0]) .batch(batch_size:128) .repeat(count:-1) .prefetch(buffer_size:tf.data.AUTOTUNE); int totalSamples = (int)X_train.shape[0]; var indices = np.arange(0, totalSamples); np.random.shuffle(indices); int trainEnd = (int)(totalSamples * 0.8) var train_X = X_train[indices[new Slice(0, trainEnd)]]; var train_Y = Y_train[indices[new Slice(0, trainEnd)]] var test_X = X_train[indices[new Slice(trainEnd)]]; var test_Y = Y_train[indices[new Slice(trainEnd)]]; var inputs = keras.Input(shape:10); var x = keras.layers.Dense(units: 64, activation: "relu").Apply(inputs); x = keras.layers.Dense(units: 128, activation: "relu").Apply(x); x = keras.layers.Dense(units: 256, activation: "relu").Apply(x); var outputs = keras.layers.Dense(5,activation: "softmax").Apply(x); var model = keras.Model(inputs, outputs); model.summary(); model.compile(loss: keras.losses.SparseCategoricalCrossentropy(), optimizer: keras.optimizers.AdamW(), metrics: ["accuracy"]); model.fit(train_X, train_Y, epochs: 200, validation_data:(test_X, test_Y)); model.evaluate(test_X, test_Y,verbose: 1); var weights = model.TrainableVariables; //获取训练参数,model.TrainableVariables 获取模型中所有可训练的变量,对于这个简单的线性回归模型,可训练变量包括权重和偏置。 print($"权重weight: {weights[0].numpy()}, 偏置bias: {weights[1].numpy()}");//打印训练后模型的权重和偏置。 weights[0] 对应权重, weights[1] 对应偏置,numpy() 方法将 TensorFlow 的张量转换为 NumPy 数组以便于打印输出。 } } 在全连接层添加正则化,列出修改后的完整代码
07-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值