请帮助我,困惑了近两天。
File "/data/ywj/Anaconda3/envs/torch/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 252, in check_compiler_abi_compatibility
if not check_compiler_ok_for_platform(compiler):
File "/data/ywj/Anaconda3/envs/torch/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 212, in check_compiler_ok_for_platform
which = subprocess.check_output(['which', compiler], stderr=subprocess.STDOUT)
File "/data/ywj/Anaconda3/envs/torch/lib/python3.6/subprocess.py", line 356, in check_output
**kwargs).stdout
File "/data/ywj/Anaconda3/envs/torch/lib/python3.6/subprocess.py", line 438, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['which', 'c++']' returned non-zero exit status 1.
Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)
我已经在/data/ywj/gcc73/gcc73中安装了gcc/g++7.3.0(非root)
我在服务器上运行该程序没有出现此错误,但是当我远程连接到服务器并在 Pycharm 中运行该程序时,出现此错误。
警告:忽略无效的分发 -yproj (c:\users\space_junk\appdata\local\programs\python\python310\lib\site-packages) 警告:忽略无效的分发 -yproj (c:\users\space_junk\appdata\local\程序\python\python310\lib\site-packages)警告:忽略无效的分发-yproj(c:\users\space_junk\appdata\local\programs\python\python310\lib\site-packages)
我目前正在使用diffusers StableDiffusionPipeline(来自拥抱的脸)通过我和朋友一起使用的不和谐机器人生成人工智能图像。我想知道是否可以在完成之前预览正在生成的图像?
例如,如果生成一张图像需要 20 秒,因为它使用扩散,所以它一开始会很模糊,然后逐渐变得越来越好。我想要的是在每次迭代(或每隔几秒)保存图像并查看它的进展情况。我怎样才能做到这一点?
class ImageGenerator:
def __init__(self, socket_listener, pretty_logger, prisma):
self.model = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", revision="fp16", torch_dtype=torch.float16, use_auth_token=os.environ.get("HF_AUTH_TOKEN"))
self.model = self.model.to("cuda")
async def generate_image(self, data):
start_time = time.time()
with autocast("cuda"):
image = self.model(data.description, height=self.default_height, width=self.default_width,
num_inference_steps=self.default_inference_steps, guidance_scale=self.default_guidance_scale)
image.save(...)
Run Code Online (Sandbox Code Playgroud)
我目前拥有的代码是这样的,但是它仅在完全完成时返回图像。我试图研究图像是如何在 StableDiffusionPipeline 内部生成的,但我找不到生成图像的任何地方。如果有人可以提供任何关于我可以从哪里开始的指示/提示,那将非常有帮助。
我正在尝试在torch7中实现一个神经网络示例.我的数据以这种形式[19 cols x 10000 rows]存储在一个文本文件中:
11 38 20 44 11 38 21 44 29 42 30 44 34 38 6 34 45 42 1
11 38 20 44 11 38 27 44 31 42 18 44 34 38 6 34 45 42 2
6 42 20 44 11 38 21 44 29 42 30 44 34 38 6 34 45 42 3
...
34 40 20 44 11 38 21 44 29 38 30 38 34 45 38 0 0 …Run Code Online (Sandbox Code Playgroud) 我想为火炬添加一个损失函数来计算预测值和目标值之间的编辑距离.有没有一种简单的方法来实现这个想法?或者我是否必须使用向后和向前功能编写自己的类?
我正在尝试调整超参数,即CNN中的批量大小.我有一台corei7,RAM 12GB的计算机,我正在训练一个带有CIFAR-10数据集的CNN网络,可以在这个博客中找到.
现在首先我已经阅读并了解了机器学习中的批量大小:
我们首先假设我们正在进行在线学习,即我们使用的小批量为1.对在线学习的明显担心是,使用仅包含一个训练示例的微型计算机将导致我们对梯度的估计出现重大错误.事实上,错误结果并非如此.原因是个别梯度估计不需要超级精确.我们所需要的只是一个足够准确的估计,我们的成本函数往往会不断下降.就好像你想要到达北极磁极一样,但每次看到它时都会有一个10-20度的离心指南针.如果你经常停下来检查指南针,并且指南针的平均方向是正确的,那么你最终会在北磁极上完好无损.
基于这个论点,听起来好像我们应该使用在线学习.事实上,情况比这更复杂.我们知道我们可以使用矩阵技术同时计算小批量中所有示例的梯度更新,而不是循环它们.根据我们的硬件和线性代数库的细节,这可以使计算(例如)100的小批量的梯度估计快得多,而不是通过分别循环100个训练样例来计算小批量梯度估计.它可能需要(比方说)只有50倍,而不是100倍.现在,起初似乎这对我们没那么大帮助.
其中总和超过了小批量的培训示例.这是对比
用于在线学习.即使只需要50倍的时间来进行小批量更新,在线学习似乎也更好,因为我们会更频繁地更新.但是,假设在小批量情况下我们将学习率提高了100倍,因此更新规则变为
这就像在线学习的单独实例一样,具有学习率?.但它只需要做单个在线学习实例的50倍.尽管如此,使用较大的迷你投影机似乎显然有可能加快速度.
现在我尝试MNIST digit dataset并运行一个示例程序并首先设置批量大小1.我记下了完整数据集所需的培训时间.然后我增加了批量大小,我注意到它变得更快.
但是在使用此代码和github链接进行培训的情况下, 更改批量大小不会减少培训时间.如果我使用30或128或64,它仍保持相同.他们说他们有92%准确性.经过两三个时代他们有得到上述40%accuracy.But当我跑在我的电脑代码,而不改变比批量我有坏的结果后10时代像只有28%和测试精度以外的任何卡在那里,在未来epochs.Then我想,既然他们已经使用批处理大小128我需要使用那个.然后我使用相同,但它变得更糟糕只有11%后10个时期并卡在那里.这是为什么??
machine-learning neural-network gradient-descent torch conv-neural-network
我试图以两种方式重复火炬的张量.例如,{1,2,3,4}两种方式重复张量3次以产生;
{1,2,3,4,1,2,3,4,1,2,3,4}
{1,1,1,2,2,2,3,3,3,4,4,4}
Run Code Online (Sandbox Code Playgroud)
有一个内置的火炬:repeatTensor函数,它将生成两个中的第一个(如numpy.tile()),但我找不到后者(如numpy.repeat()).我确信我可以在第一次调用sort来给第二个,但我认为对于更大的数组,这可能在计算上是昂贵的?
谢谢.
我目前正在使用火炬在某些输入数据上实施随机混洗(在这种情况下,在行中是第一维)。我是火炬手的新手,所以我很难弄清排列的工作原理。
以下是应该重新整理数据的方法:
if argshuffle then
local perm = torch.randperm(sids:size(1)):long()
print("\n\n\nSize of X and y before")
print(X:view(-1, 1000, 128):size())
print(y:size())
print(sids:size())
print("\nPerm size is: ")
print(perm:size())
X = X:view(-1, 1000, 128)[{{perm},{},{}}]
y = y[{{perm},{}}]
print(sids[{{1}, {}}])
sids = sids[{{perm},{}}]
print(sids[{{1}, {}}])
print(X:size())
print(y:size())
print(sids:size())
os.exit(69)
end
Run Code Online (Sandbox Code Playgroud)
打印出来
Size of X and y before
99
1000
128
[torch.LongStorage of size 3]
99
1
[torch.LongStorage of size 2]
99
1
[torch.LongStorage of size 2]
Perm size is:
99
[torch.LongStorage of size 1]
5 …Run Code Online (Sandbox Code Playgroud) fast.ai的github存储库 (因为代码提升了构建在PyTorch之上的库)
请滚动讨论一下
我正在运行以下代码,并在尝试将数据传递给predict_array函数时出错
当我尝试使用它直接在单个图像上进行预测时代码失败但是当相同的图像在test文件夹中时它运行完美
from fastai.conv_learner import *
from planet import f2
PATH = 'data/shopstyle/'
metrics=[f2]
f_model = resnet34
def get_data(sz):
tfms = tfms_from_model(f_model, sz, aug_tfms=transforms_side_on, max_zoom=1.05)
return ImageClassifierData.from_csv(PATH, 'train', label_csv, tfms=tfms, suffix='.jpg', val_idxs=val_idxs, test_name='test')
def print_list(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
label_csv = f'{PATH}prod_train.csv'
n = len(list(open(label_csv)))-1
val_idxs = get_cv_idxs(n)
sz = 64
data = get_data(sz)
print("Loading model...")
learn = ConvLearner.pretrained(f_model, data, metrics=metrics)
learn.load(f'{sz}') …Run Code Online (Sandbox Code Playgroud) 我有一个模型,它带有三个带有相同标签的可变长度输入.我有办法pack_padded_sequence以某种方式使用吗?如果是这样,我应该如何排序我的序列?
例如,
a = (([0,1,2], [3,4], [5,6,7,8]), 1) # training data is in length 3,2,4; label is 1
b = (([0,1], [2], [6,7,8,9,10]), 1)
Run Code Online (Sandbox Code Playgroud)
a和b都将被输入三个分离的LSTM,结果将被合并以预测目标.
torch ×10
python ×5
lua ×2
pytorch ×2
fiona ×1
geopandas ×1
huggingface ×1
linux ×1
lua-table ×1
osgeo ×1
permutation ×1
pycharm ×1
tensor ×1
ubuntu-20.04 ×1