Julia生成一组数列的全部排列组合

毕设中要用到了一组数的所有排列组合,但发现相关中文资料很少

 下面程序段生成1到5一共5个数的所有排列组合情况,用到Combinatorics的permutations函数

using Combinatorics
number = [1:5...]
b = collect(permutations(number))

Julia生成组合数需要用到Combinatorics的包

第二行是构成1到5的数列,省略号不能缺,否则会出错,我一开始接触Julia也会语导这种错误

 下面是程序输出

120-element Vector{Vector{Int64}}:
 [1, 2, 3, 4, 5]
 [1, 2, 3, 5, 4]
 [1, 2, 4, 3, 5]
 [1, 2, 4, 5, 3]
 [1, 2, 5, 3, 4]
 [1, 2, 5, 4, 3]
 [1, 3, 2, 4, 5]
 [1, 3, 2, 5, 4]
 [1, 3, 4, 2, 5]
 [1, 3, 4, 5, 2]
 ⋮
 [5, 3, 2, 4, 1]
 [5, 3, 4, 1, 2]
 [5, 3, 4, 2, 1]
 [5, 4, 1, 2, 3]
 [5, 4, 1, 3, 2]
 [5, 4, 2, 1, 3]
 [5, 4, 2, 3, 1]
 [5, 4, 3, 1, 2]
 [5, 4, 3, 2, 1]

 补充:

Julia中想构建等差数列要用到如下的格式

a = [1:5...]

 输出为

 

5-element Vector{Int64}:
 1
 2
 3
 4
 5

如果用

 

a = [1:5]

或者

a = 1:5

输出都会出错

1-element Vector{UnitRange{Int64}}:
 1:5

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这里给出一个简单的 GCGAN 生成器和鉴别器的 Julia 实现。 首先,需要导入一些必要的包: ```julia using Flux using Flux: @epochs, mse, throttle, Adam using Images using Random ``` 接下来,定义生成器和鉴别器的函数: ```julia # 定义生成器函数 function generator(noise_dim, img_size) return Chain( Dense(noise_dim, 256), BatchNorm(256), x -> leakyrelu.(x, 0.2), Dense(256, 512), BatchNorm(512), x -> leakyrelu.(x, 0.2), Dense(512, 1024), BatchNorm(1024), x -> leakyrelu.(x, 0.2), Dense(1024, prod(img_size)), x -> reshape(x, img_size), ConvTranspose((4, 4), 512 => 256, pad=(1,1), stride=(2,2)), BatchNorm(256), x -> leakyrelu.(x, 0.2), ConvTranspose((4, 4), 256 => 128, pad=(1,1), stride=(2,2)), BatchNorm(128), x -> leakyrelu.(x, 0.2), ConvTranspose((4, 4), 128 => 64, pad=(1,1), stride=(2,2)), BatchNorm(64), x -> leakyrelu.(x, 0.2), ConvTranspose((4, 4), 64 => 3, pad=(1,1), stride=(2,2)), x -> tanh.(x) ) end # 定义鉴别器函数 function discriminator(img_size) return Chain( Conv((4, 4), 3 => 64, pad=(1,1), stride=(2,2)), x -> leakyrelu.(x, 0.2), Conv((4, 4), 64 => 128, pad=(1,1), stride=(2,2)), BatchNorm(128), x -> leakyrelu.(x, 0.2), Conv((4, 4), 128 => 256, pad=(1,1), stride=(2,2)), BatchNorm(256), x -> leakyrelu.(x, 0.2), Conv((4, 4), 256 => 512, pad=(1,1), stride=(2,2)), BatchNorm(512), x -> leakyrelu.(x, 0.2), Conv((4, 4), 512 => 1, pad=(0,0), stride=(1,1)), x -> reshape(x, ()), x -> sigmoid(x) ) end ``` 其中,生成器函数接受噪声维度 `noise_dim` 和生成图像的大小 `img_size` 作为参数,返回一个 `Chain` 类型的模型,其中包含了多个全连接层和卷积转置层,最终输出大小为 `img_size` 的图像。 鉴别器函数接受生成图像的大小 `img_size` 作为参数,返回一个 `Chain` 类型的模型,其中包含了多个卷积层和全连接层,最终输出一个标量,表示输入图像的真实度。 生成器和鉴别器的训练代码如下: ```julia # 定义训练数据 data = [Float32.(load(i)) for i in readdir("data")] # 定义噪声维度和图像大小 noise_dim = 100 img_size = size(data[1]) # 定义生成器和鉴别器 G = generator(noise_dim, img_size) D = discriminator(img_size) # 定义损失函数 loss_fn(D, x, y) = mse(D(x), y) # 定义优化器 opt_G = Adam(params(G)) opt_D = Adam(params(D)) # 训练 GCGAN @epochs 1000 Flux.train!(loss_fn, ((randn(noise_dim),), data), G, opt_G, D, opt_D, cb = throttle(() -> @show(loss_fn(D, randn(noise_dim), true)), 10)) ``` 其中,训练数据通过 `readdir` 函数读取文件夹中的所有图像,然后使用 `Float32` 转换为浮点数类型。噪声维度和图像大小也要根据数据进行设定。 损失函数使用均方误差函数 `mse`,优化器使用 Adam 算法。训练过程中,每 10 个 epoch 打印一次当前的损失函数值。 这样,就完成了一个简单的 GCGAN 的生成器和鉴别器的 Julia 实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值