2023-3-12文档更新说明:
由于特殊原因,本项目文档将停止更新,详情请见原作者首页,感谢各位的支持!
本文档的Github项目地址 点击前往
本帮助文档为项目 so-vits-svc补档 的详细中文安装、调试、推理教程,您也可以直接选择官方README文档
撰写:Sucial 点击跳转B站主页
- 本项目需要的环境:
NVIDIA-CUDA
Python <= 3.10
Pytorch
FFmpeg
在cmd控制台里输入nvidia-smi.exe以查看显卡驱动版本和对应的cuda版本
前往 NVIDIA-Developer 官网下载与系统对应的Cuda版本
以Cuda-11.7版本为例(注:本文下述所有配置均在Cuda-11.7下演示)Cuda11.7下载地址 根据自己的系统和需求选择安装(一般本地Windows用户请依次选择Windows, x86_64, 系统版本, exe(local))
安装成功之后在cmd控制台中输入nvcc -V, 出现类似以下内容则安装成功:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_May__3_19:00:59_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.7, V11.7.64
Build cuda_11.7.r11.7/compiler.31294372_0
cuda11.7nvidia-smi.exe并不会出现cuda版本变化,即任然显示的是>11,7的版本NVIDIA CUDA的程序全部卸载即可(一共5个)python出现类似以下内容则安装成功: Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
# 设置清华大学下载镜像
pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
requirements.txt的文本文件,输入以下内容保存 Flask==2.1.2
Flask_Cors==3.0.10
gradio==3.4.1
numpy==1.23.5
playsound==1.3.0
PyAudio==0.2.12
pydub==0.25.1
pyworld==0.3.2
requests==2.28.1
scipy==1.10.0
sounddevice==0.4.5
SoundFile==0.10.3.post1
starlette==0.19.1
tqdm==4.63.0
scikit-maad
praat-parselmouth
tensorboard
librosa
pip install [库名称]重新单独安装直至成功) pip install -r requirements.txt
torch, torchaudio, torchvision这三个库,下面提供两种方法直接前往 Pytorch官网 选择所需版本然后复制Run this Command栏显示的命令至cmd安装(不建议)
Ctrl+F搜索直接下载whl包 点击前往 https://download.pytorch.org/whl/
- 这个项目需要的是
torch==1.13.0+cu117
torchaudio==0.13.0+cu117
torchvision-0.14.0+cu117
1.13.0 和0.13.0表示是pytorch版本,cu117表示cuda版本11.7
以此类推,请选择 适合自己的版本 安装
Cuda11.7版本为例
- 我们需要安装以下三个库
torch-1.13.0+cu117点击下载:torch-1.13.0+cu117-cp310-cp310-win_amd64.whl
其中cp310指python3.10,win-amd64表示windows 64位操作系统torchaudio-0.13.0+cu117点击下载:torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whltorchvision-0.14.0+cu117点击下载:torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl
pip install .\torch-1.13.0+cu117-cp310-cp310-win_amd64.whl
# 回车运行(安装时间较长)
pip install .\torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whl
# 回车运行
pip install .\torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl
# 回车运行
Successfully installed ...之后再执行下一条命令,第一个torch包安装时间较长安装完torch, torchaudio, torchvision这三个库之后,在cmd控制台运用以下命令检测cuda与torch版本是否匹配
python
# 回车运行
import torch
# 回车运行
print(torch.__version__)
# 回车运行
print(torch.cuda.is_available())
# 回车运行
True则成功,出现False则失败,需要重新安装.\ffmpeg\bin(详细安装方法以及添加Path此处省略,网上随便一查都有)ffmpeg -version出现类似以下内容则安装成功ffmpeg version git-2020-08-12-bb59bdb Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10.2.1 (GCC) 20200805
configuration: [此处省略一大堆内容]
libavutil 56. 58.100 / 56. 58.100
libavcodec 58.100.100 / 58.100.100
...
前往 so-vits-svc补档 选择32k分支(本教程针对32k)下载源代码。
解压到任意文件夹
hubert
https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt
G与D预训练模型
https://huggingface.co/innnky/sovits_pretrained/resolve/main/G_0.pth
https://huggingface.co/innnky/sovits_pretrained/resolve/main/D_0.pth
上述三个底模如果原链接下载不了请点击下方的链接
https://pan.baidu.com/s/1uw6W3gOBvMbVey1qt_AzhA?pwd=80eo 提取码:80eo
hubert-soft-0d54a1f4.pt放入.\hubert文件夹D_0.pth和G_0.pth文件放入.\logs\32k文件夹准备的训练数据,建议60-100条语音(格式务必为wav,不同的说话人建立不同的文件夹),每条语音控制在4-8秒!(确保语音不要有噪音或尽量降低噪音,一个文件夹内语音必须是一个人说的),可以训练出效果不错的模型
.\dataset_raw文件夹里,文件结构类似如下:dataset_raw
├───speaker0
│ ├───xxx1-xxx1.wav
│ ├───...
│ └───Lxx-0xx8.wav
└───speaker1
├───xx2-0xxx2.wav
├───...
└───xxx7-xxx007.wav
.\dataset_raw文件夹内新建并编辑config.json,代码如下:"n_speakers": 10 //修改数字为说话人的人数
"spk":{
"speaker0": 0, //修改speaker0为第一个说话人的名字,需要和文件夹名字一样,后面的: 0, 不需要改
"speaker1": 1, //以此类推
"speaker2": 2,
//以此类推
}
so-vits-svc文件夹内运行终端,直接执行: python resample.py
注意:如果遇到如下报错:
...
E:\vs\so-vits-svc-32k\resample.py:17: FutureWarning: Pass sr=None as keyword args. From version 0.10 passing these as positional arguments will result in an error
wav, sr = librosa.load(wav_path, None)
E:\vs\so-vits-svc-32k\resample.py:17: FutureWarning: Pass sr=None as keyword args. From version 0.10 passing these as positional arguments will result in an error
wav, sr = librosa.load(wav_path, None)
...
请打开resample.py,修改第17行内容
# 第17行修改前如下
wav, sr = librosa.load(wav_path, None)
# 第17行修改后如下
wav, sr = librosa.load(wav_path, sr = None)
保存,重新执行python resample.py命令
.\dataset\32k文件夹中会有说话人的wav语音,之后dataset_raw文件夹就可以删除了so-vits-svc文件夹内运行终端,直接执行: python preprocess_flist_config.py
PS E:\vs\so-vits-svc-32k> python preprocess_flist_config.py
100%|██████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1993.49it/s]
Writing ./filelists/train.txt
100%|██████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:00<?, ?it/s]
Writing ./filelists/val.txt
100%|████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<?, ?it/s]
Writing ./filelists/test.txt
100%|████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<?, ?it/s]
Writing configs/config.json
so-vits-svc文件夹内运行终端,直接执行: python preprocess_hubert_f0.py
PS E:\vs\so-vits-svc-32k> python preprocess_hubert_f0.py
Loading hubert for content...
Loaded hubert.
0%| | 0/20 [00:00<?, ?it/s]dataset/32k\speaker\1_01.wav
5%|████ | 1/20 [00:03<01:00, 3.20s/it]dataset/32k\speaker\1_02.wav
10%|████████ | 2/20 [00:03<00:25, 1.40s/it]dataset/32k\speaker\1_03.wav
15%|████████████ | 3/20 [00:03<00:14, 1.19it/s]dataset/32k\speaker\1_04.wav
20%|████████████████▌ | 4/20 [00:03<00:09, 1.69it/s]dataset/32k\speaker\1_05.wav
25%|████████████████████ | 5/20 [00:03<00:06, 2.39it/s]dataset/32k\speaker\1_06.wav
30%|████████████████████████ | 6/20 [00:04<00:04, 2.98it/s]dataset/32k\speaker\1_07.wav
35%|█████████████████████████████ | 7/20 [00:04<00:03, 3.48it/s]dataset/32k\speaker\1_08.wav
40%|█████████████████████████████████ | 8/20 [00:04<00:03, 3.78it/s]dataset/32k\speaker\1_09.wav
45%|█████████████████████████████████████ | 9/20 [00:04<00:02, 4.13it/s]dataset/32k\speaker\1_10.wav
50%|█████████████████████████████████████████ | 10/20 [00:04<00:02, 4.41it/s]dataset/32k\speaker\1_11.wav
55%|█████████████████████████████████████████████ | 11/20 [00:04<00:01, 4.71it/s]dataset/32k\speaker\1_12.wav
60%|█████████████████████████████████████████████████ | 12/20 [00:05<00:01, 4.93it/s]dataset/32k\speaker\1_13.wav
65%|█████████████████████████████████████████████████████ | 13/20 [00:05<00:01, 5.25it/s]dataset/32k\speaker\1_14.wav
70%|█████████████████████████████████████████████████████████ | 14/20 [00:05<00:01, 5.46it/s]dataset/32k\speaker\1_15.wav
75%|█████████████████████████████████████████████████████████████▌ | 15/20 [00:05<00:00, 6.19it/s]dataset/32k\speaker\1_16.wav
80%|█████████████████████████████████████████████████████████████████▌ | 16/20 [00:05<00:00, 5.84it/s]dataset/32k\speaker\1_17.wav
85%|█████████████████████████████████████████████████████████████████████ | 17/20 [00:06<00:00, 5.43it/s]dataset/32k\speaker\1_18.wav
90%|█████████████████████████████████████████████████████████████████████████ | 18/20 [00:06<00:00, 5.27it/s]dataset/32k\speaker\1_19.wav
95%|█████████████████████████████████████████████████████████████████████████████ | 19/20 [00:06<00:00, 5.26it/s]dataset/32k\speaker\1_20.wav
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:06<00:00, 3.03it/s]
.\configs\config.json修改第13行代码"batch_size"的数值。这边解释一下"batch_size": 12,数值12要根据自己电脑的显存(任务管理器-GPU-专用GPU内存)来调整
- 修改建议
6G显存 建议修改成2或3
8G显存 建议修改成4
"batch_size"参数调小可以解决显存不够的问题
train.py# 第60行将nccl改成gloo(如果后续开始训练时gloo报错就改回nccl,一般不会报错)
# 修改前如下
dist.init_process_group(backend='nccl', init_method='env://', world_size=n_gpus, rank=rank)
# 修改后如下
dist.init_process_group(backend='gloo', init_method='env://', world_size=n_gpus, rank=rank)
# 第44行开始
# 修改前如下
n_gpus = torch.cuda.device_count()
os.environ['MASTER_ADDR'] = 'localhost'
os.environ['MASTER_PORT'] = hps.train.port
#修改后增加代码后如下
n_gpus = torch.cuda.device_count()
os.environ['MASTER_ADDR'] = 'localhost'
os.environ['MASTER_PORT'] = hps.train.port
os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 这里的0代表GPU0是用来训练的显卡,不知道是0还是1的可以在任务管理器查看,如果是双显卡的话一定要选择适合的显卡
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:32" # 这里的32如果懂的话也可以修改,不懂别改
so-vits-svc文件夹内运行终端,直接执行下面命令开始训练 python train.py -c configs/config.json -m 32k
torch.cuda.OutOfMemoryError: CUDA out of menory. Tried to allocate 16.80 MiB (GPU 0; 8.0 GiB total capacity; 7.11 Gi8 already allocated; 0 bytes free; 7.30 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_cUDA_ALLOC_CONF
# 注意:一定是 0 bytes free < Tried to allocate 16.80 MiB 才是显存不足,不然就是别的问题
python train.py -c configs/config.json -m 32k,多重试几遍,或者关机重启,一般是会成功的。如果报错一直是同一个报错,那就是对应的那里出问题了(要靠报错找问题所在)2023-02-08 18:07:42,439 32k INFO {'train': {'log_interval': 200, 'eval_interval': 1000, 'seed': 1234, 'epochs': 10000, 'learning_rate': 0.0001, 'betas': [0.8, 0.99], 'eps': 1e-09, 'batch_size': 2, 'fp16_run': False, 'lr_decay': 0.999875, 'segment_size': 17920, 'init_lr_ratio': 1, 'warmup_epochs': 0, 'c_mel': 45, 'c_kl': 1.0, 'use_sr': True, 'max_speclen': 384, 'port': '8001'}, 'data': {'training_files': 'filelists/train.txt', 'validation_files': 'filelists/val.txt', 'max_wav_value': 32768.0, 'sampling_rate': 32000, 'filter_length': 1280, 'hop_length': 320, 'win_length': 1280, 'n_mel_channels': 80, 'mel_fmin': 0.0, 'mel_fmax': None}, 'model': {'inter_channels': 192, 'hidden_channels': 192, 'filter_channels': 768, 'n_heads': 2, 'n_layers': 6, 'kernel_size': 3, 'p_dropout': 0.1, 'resblock': '1', 'resblock_kernel_sizes': [3, 7, 11], 'resblock_dilation_sizes': [[1, 3, 5], [1, 3, 5], [1, 3, 5]], 'upsample_rates': [10, 8, 2, 2], 'upsample_initial_channel': 512, 'upsample_kernel_sizes': [16, 16, 4, 4], 'n_layers_q': 3, 'use_spectral_norm': False, 'gin_channels': 256, 'ssl_dim': 256, 'n_speakers': 2}, 'spk': {'Sucial': 0}, 'model_dir': './logs\\32k'}
2023-02-08 18:07:42,440 32k WARNING E:\vs\so-vits-svc-32k is not a git repository, therefore hash value comparison will be ignored.
2023-02-08 18:07:45,451 32k INFO Loaded checkpoint './logs\32k\G_0.pth' (iteration 1)
2023-02-08 18:07:45,998 32k INFO Loaded checkpoint './logs\32k\D_0.pth' (iteration 1)
2023-02-08 18:07:55,722 32k INFO Train Epoch: 1 [0%]
2023-02-08 18:07:55,723 32k INFO [1.376741886138916, 3.908522129058838, 12.127800941467285, 35.539894104003906, 4.270486354827881, 0, 0.0001]
2023-02-08 18:08:01,381 32k INFO Saving model and optimizer state at iteration 1 to ./logs\32k\G_0.pth
2023-02-08 18:08:02,344 32k INFO Saving model and optimizer state at iteration 1 to ./logs\32k\D_0.pth
2023-02-08 18:08:19,482 32k INFO ====> Epoch: 1
2023-02-08 18:08:40,093 32k INFO ====> Epoch: 2
2023-02-08 18:09:01,010 32k INFO ====> Epoch: 3
2023-02-08 18:09:21,715 32k INFO ====> Epoch: 4
2023-02-08 18:09:42,242 32k INFO ====> Epoch: 5
2023-02-08 18:10:02,528 32k INFO ====> Epoch: 6
2023-02-08 18:10:22,965 32k INFO ====> Epoch: 7
2023-02-08 18:10:29,149 32k INFO Train Epoch: 8 [14%]
2023-02-08 18:10:29,150 32k INFO [2.378505229949951, 2.3670239448547363, 10.534687042236328, 19.235595703125, 1.8958038091659546, 200, 9.991253280566489e-05]
2023-02-08 18:10:43,388 32k INFO ====> Epoch: 8
2023-02-08 18:11:03,722 32k INFO ====> Epoch: 9
2023-02-08 18:11:23,859 32k INFO ====> Epoch: 10
...
- 按
Ctrl+C- 直接右上角叉掉
在控制台中运行python train.py -c config/config.json -m 32k即可继续训练
.\logs\32k\train.log# 示例3
2023-02-08 18:32:24,942 32k INFO [2.252035617828369, 2.5846095085144043, 8.220404624938965, 5 17.75478744506836, 0.9781494140625, 2000, 9.911637167309565e-05]
2023-02-08 18:32:28,889 32k INFO Saving model and optimizer state at iteration 72 to ./logs\32k\G_2000.pth
2023-02-08 18:32:29,661 32k INFO Saving model and optimizer state at iteration 72 to ./logs\32k\D_2000.pth
# 示例1
2023-02-08 18:32:39,907 32k INFO ====> Epoch: 72
2023-02-08 18:33:00,099 32k INFO ====> Epoch: 73
2023-02-08 18:33:20,682 32k INFO ====> Epoch: 74
2023-02-08 18:33:40,887 32k INFO ====> Epoch: 75
2023-02-08 18:34:01,460 32k INFO ====> Epoch: 76
2023-02-08 18:34:21,798 32k INFO ====> Epoch: 77
2023-02-08 18:34:41,866 32k INFO ====> Epoch: 78
2023-02-08 18:34:54,712 32k INFO Train Epoch: 79 [57%]
# 示例2
2023-02-08 18:34:54,712 32k INFO [2.282658100128174, 2.5492446422576904, 10.027194023132324, 15.401838302612305, 1.598284363746643, 2200, 9.902967736366644e-05]
以下的解释我引用了B站up主inifnite_loop的解释,相关视频 相关专栏
- 需要关注两个参数:Epoch和global_step
Epoch表示迭代批次,每一批次可以看作一个迭代分组
Global_step表示总体迭代次数- 两者的关系是global_step = 最多语音说话人的语音数 / batch_size * epoch
batch_size是配置文件中的参数- 示例1: 每一次迭代输出内
====> Epoch: 74表示第74迭代批次完成- 示例2:
Global_step每200次输出一次 (配置文件中的参数log_interval)- 示例3:
Global_step每1000次输出一次(配置文件中的参数eval_interval),会保存模型到新的文件
以上,我们谈论到了每1000次迭代才会保存一次模型样本,那么,这些样本保存在哪里呢?如何处理这些样本呢?下面我将详细讲述。
.\logs\32kD_0.pth
D_1000.pth
D_2000.pth
D_3000.pth
D_4000.pth
...
G_0.pth
G_1000.pth
G_2000.pth
G_3000.pth
G_4000.pth
...
按上述方法训练得到最后一次的G和D后,该如何使用这些模型呢?下面我将讲述具体的使用操作方法
.\raw文件夹inference_main.py,修改第17-27行,具体修改内容如下:model_path = "logs/32k/G_10000.pth" # 这里改成你最新训练出来的G模型路径
config_path = "configs/config.json"
svc_model = Svc(model_path, config_path)
infer_tool.mkdir(["raw", "results"])
# 支持多个wav文件,放在raw文件夹下
clean_names = ["vocals_01", "vocals_02","vocals_03"] # 这里修改成你要处理的干声片段的文件名,支持多个文件
trans = [0] # 音高调整,支持正负(半音)
spk_list = ['Sucial'] # 这里是说话人的名字,之前准备训练样本的文件夹名字
slice_db = -40 # 默认-40,嘈杂的音频可以-30,干声保留呼吸可以-50
wav_format = 'wav' # 音频输出格式
#inference_main.py line35 第35行,
wav_path = Path(raw_audio_path).with_suffix('.wav')
#改为
wav_path = str(Path(raw_audio_path).with_suffix('.wav'))
so-vits-svc文件夹内运行终端,执行下面命令开始推理生成 python .\inference_main.py
.\results文件夹下
- 以下是对本文档的撰写有帮助的感谢名单:
so-vits-svc 官方源代码和帮助文档
B站up主inifnite_loop 相关视频 相关专栏
所有提供训练音频样本的人员
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
在神经网络方面,我完全是个初学者。我整天都在与ruby-fann和ai4r搏斗,不幸的是我没有任何东西可以展示,所以我想我会来到StackOverflow并询问这里的知识渊博的人。我有一组样本——每天都有一个数据点,但它们不符合我能够找出的任何明确模式(我尝试了几次回归)。不过,我认为看看是否有任何方法可以仅从日期预测future的数据会很好,而且我认为神经网络将是生成希望表达这种关系的函数的好方法.日期是DateTime对象,数据点是十进制数,例如7.68。我一直在将DateTime对象转换为float,然后除以10,000,000,000得到一个介于0和1之间的数字,我一直在将
应用将在Heroku上运行依赖包括回形针哈姆指南针设计aws-s3支持或反对的理由?对其他版本的ruby有什么建议吗?更新Heroku目前不支持1.9.2,但预计很快会基于thispost.Rails3.0正式支持1.9.2(但不支持1.9.1),所以我决定继续使用它。更新Heroku在其beta堆栈上支持1.9.2。 最佳答案 我会说是的。当您准备好推出您的应用程序时(2-3个月?),应该解决越来越多的兼容性问题。此外,如果您遇到任何问题,您可以提交补丁并为更快的1.9.2兼容性做出贡献!;)但是为了回答您的问题,考虑到您要使
我正在尝试编写一个Ruby扩展,而且我一整天都在成功编译我的nmatrix.so共享对象文件。但是,突然之间,它开始生成nmatrix.bundle,而根本没有任何.so文件。它没有给我任何链接器错误,所以我无法想象为什么会这样。我也没有更改myMakefileorextconf.rb中的任何内容.我一直通过rvm使用Ruby1.9.3p0。我已经尝试对当天的工作执行gitstashsave并编译一些我知道应该没有链接器错误的东西(产生.so的东西)更早。不幸的是,这也会生成一个.bundle文件。很明显,我做了一些事情——可能是无意中安装了一些东西——这改变了一些关键的GCC设置。这
我正在尝试训练一个前馈网络来使用Ruby库AI4R执行异或运算。然而,当我在训练后评估XOR时。我没有得到正确的输出。有没有人以前使用过这个库并得到它来学习异或运算。我使用了两个输入神经元,一个隐藏层中的三个神经元,一个输出层,正如我看到的预计算XOR前馈神经网络就像这样。require"rubygems"require"ai4r"#Createthenetworkwith:#2inputs#1hiddenlayerwith3neurons#1outputsnet=Ai4r::NeuralNetwork::Backpropagation.new([2,3,1])example=[[0,
目录一、安装包链接二、安装详细步骤1.安装Wireshark和WinPcap2.安装OracleVMVirtualBox3.安装ensp三、安装后注册四、启动路由器出现40错误怎么解决一、安装包链接二、安装详细步骤链接:https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx提取码:xftx1.安装Wireshark和WinPcap找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。2.安装OracleVMVirtualBox找到OracleVMVirtualBox安装包所在文件夹,双击它,按照以下步骤安装。注:可自定义安装
Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存