傅里叶特征学习高频:Fourier 相关工作+实验分析+代码实现

Deep Stable Learning for Out-Of-Distribution Generalization 简介   这是一篇来自2021年CVPR的论文。文章的主要贡献就是通过给每个样本加权,来消除掉虚假关联,使得模型更加关注与分类结果有因果关系的discriminative features。举一个简单的例子,下图是传统的resnet18网络和作者的stableNet对图片中不同特征的关注差异,stableNet会更关注狗本身的特征,它是与标签dog有因果关系的特征,而resnet的关注点还会有背景,如水,它把水也作为dog的特征(因为使用的训练集大部分是以水为背景的),而文章的目标就是消除这样的虚假关联。 阅读详情
AI摘要

这篇博客探讨了基于坐标多层感知器(MLP)在表示图像和3D场景等视觉信号中的应用,强调了输入坐标通过傅里叶特征映射的重要性。研究发现,对数间隔轴对齐的正弦波位置编码可以提高MLP性能,特别是在从2D图像和低温电子显微镜数据中学习新视图的任务中。文章通过实验展示了不同频率分布对结果的影响,并分析了这些映射如何改变网络的NTK,从而影响收敛特性。最后,提供了Pytorch和JAX的实现示例,展示如何在图像回归任务中使用傅里叶特征。

在这里插入图片描述
个人感觉这个任务还是有一定特点的:输入数据应该呈现类似均匀分布 个人感觉这个任务还是有一定特点的:输入数据应该呈现类似均匀分布 个人感觉这个任务还是有一定特点的:输入数据应该呈现类似均匀分布

基于坐标的MLP的相关实验

       由于基于坐标的MLP易于基于梯度的优化和机器学习,并且可以比网格采样表示更紧凑,因此该策略具有吸引力。并在许多方面各种任务中取得了最先进的结果。

  • 表示图像(合成图案生成网络)
    • Anh Nguyen, Jason Yosinski, and Jeff Clune. Deep neural networks are easily fooled: High confidence predictions for unrecognizable images. CVPR, 2015.
    • Kenneth O. Stanley. Compositional pattern producing networks: A novel abstraction of development. Genetic Programming and Evolvable Machines, 2007.
  • 体积密度
    • Ben Mildenhall, Pratul P Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, and Ren Ng. NeRF: Representing scenes as neural radiance fields for view synthesis. arXiv preprint arXiv:2003.08934, 2020.
  • 占用率
    • Lars Mescheder, Michael Oechsle, Michael Niemeyer, Sebastian Nowozin, and Andreas Geiger. Occupancy networks: Learning 3D reconstruction in function space. CVPR, 2019.
  • 符号距离
    • Jeong Joon Park, Peter Florence, Julian Straub, Richard Newcombe, and Steven Lovegrove. DeepSDF: Learning continuous signed distance functions for shape representation. CVPR,2019.
  • 形状表示
    • Zhiqin Chen and Hao Zhang. Learning implicit fields for generative shape modeling. CVPR,2019.
    • Boyang Deng, JP Lewis, Timothy Jeruzalski, Gerard Pons-Moll, Geoffrey Hinton, Mohammad Norouzi, and Andrea Tagliasacchi. Neural articulated shape approximation. arXiv preprint arXiv:1912.03207, 2019.
    • Kyle Genova, Forrester Cole, Aaron Sarna Daniel Vlasic, William T. Freeman, and Thomas Funkhouser. Learning shape templates with structured implicit functions. ICCV, 2019.
    • Kyle Genova, Forrester Cole, Avneesh Sud, Aaron Sarna, and Thomas Funkhouser. Local deep implicit functions for 3D shape. CVPR, 2020.
    • Chiyu Jiang, Avneesh Sud, Ameesh Makadia, Jingwei Huang, Matthias Nießner, and Thomas Funkhouser. Local implicit grid representations for 3D scenes. CVPR, 2020.
    • Mateusz Michalkiewicz, Jhony K Pontes, Dominic Jack, Mahsa Baktashmotlagh, and Anders Eriksson. Implicit surface representations as layers in neural networks. ICCV, 2019.
    • Jeong Joon Park, Peter Florence, Julian Straub, Richard Newcombe, and Steven Lovegrove. DeepSDF: Learning continuous signed distance functions for shape representation. CVPR,2019.
  • 纹理合成
    • Philipp Henzler, Niloy J Mitra, and Tobias Ritschel. Learning a neural 3d texture space from 2d exemplars. CVPR, 2020.
    • Michael Oechsle, Lars Mescheder, Michael Niemeyer, Thilo Strauss, and Andreas Geiger.Texture fields: Learning texture representations in function space. ICCV, 2019.
  • 图像的形状推断
    • Shaohui Liu, Yinda Zhang, Songyou Peng, Boxin Shi, Marc Pollefeys, and Zhaopeng Cui. Dist:Rendering deep implicit signed distance function with differentiable sphere tracing. CVPR,2020.
    • Shichen Liu, Shunsuke Saito, Weikai Chen, and Hao Li. Learning to infer implicit surfaces without 3D supervision. NeurIPS, 2019.
  • 新颖的视图合成
    • Ben Mildenhall, Pratul P Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi,and Ren Ng. NeRF: Representing scenes as neural radiance fields for view synthesis. arXiv preprint arXiv:2003.08934, 2020.
    • Michael Niemeyer, Lars Mescheder, Michael Oechsle, and Andreas Geiger. Differentiable volumetric rendering: Learning implicit 3D representations without 3D supervision. CVPR, 2020.
    • Shunsuke Saito, , Zeng Huang, Ryota Natsume, Shigeo Morishima, Angjoo Kanazawa, and Hao Li. PIFu: Pixel-aligned implicit function for high-resolution clothed human digitization. ICCV, 2019.
    • Vincent Sitzmann, Michael Zollhoefer, and Gordon Wetzstein. Scene representation networks: Continuous 3D-structure-aware neural scene representations. NeurIPS, 2019.

在这里插入图片描述
       在第6节中,我们继续进行高维实验的高斯分布,并将尺度作为超参数,在验证数据集上进行调整.在映射时需要在高斯分布中随机采样参数,分布的std对实验结果的影响如下:

在这里插入图片描述

在这里插入图片描述
除了3Dshape其他的评价指标都为PSNR,3Dshape使用IoU (higher is better for all).

On the Spectral Bias of Deep Neural Networks笔记
深度神经网络为什么不易过拟合?固有频谱偏差On the Spectral Bias of Neural Networks
github代码
论文 18 Jun 2020
论文笔记1
论文笔记2
video
相关链接:
Nerf
https://dellaert.github.io/NeRF/
ICLR 2019 有什么值得关注的亮点?我们终于证明了,只要足够宽,随机初始化的神经网络+梯度下降真的可以拟合所有数据!!!
Gradient Descent Provably Optimizes Over-parameterized Neural Networks

相关工作

       我们的工作的动机是广泛使用基于坐标的MLP来表示各种视觉信号,包括图像[38]和3D场景[24,27,32]。特别地,我们的分析旨在阐明实验结果,证明使用对数间隔轴对齐频率的正弦波进行坐标输入映射(他们称之为“位置编码”)可以提高基于坐标的MLP在从2D图像[27]和蛋白质合成新视图任务中的性能低温电子显微镜的结构建模[44]。我们分析了这种技术,以表明它对应于MLP的NTK的修改,并且我们表明其他非轴对齐频率分布可以优于这种位置编码。
之前在自然语言处理和时间序列分析方面的工作[18,39,42]使用了类似的位置编码来表示时间或一维位置。特别是,Xu等人[42]使用随机傅立叶特征(RFF)1用正弦输入映射逼近平稳核,并提出调整映射参数的技术。我们的工作将这种映射直接解释为对最终网络的NTK的修改,从而扩展了这一点。此外,我们还讨论了多维坐标的嵌入,这是视觉和图形任务所必需的。

       为了分析在输入坐标通过MLP之前将傅里叶特征映射应用于输入坐标的效果,我们依赖于最近的理论工作,该工作使用NTK[2,5,11,16,20]将神经网络在无限宽度和无限小学习率的限制下建模为核回归。
       特别是,我们使用了Lee等人[20]和Arora等人[2]的分析,这表明在梯度下降过程中,网络的输出仍然接近线性动力系统的输出,其收敛速度由NTK矩阵的特征值决定[2,3,5,20,43]。对NTK特征分解(NTK’s eigendecomposition)的分析表明,其特征值谱随频率迅速衰减,这解释了人们广泛观察到的深层网络学习低频函数的“谱偏差”[3,4,33]。
       我们利用这一分析来考虑在网络之前添加傅立叶特征映射的影响,并且我们表明这种映射对NTK的特征值谱和相应的网络在实际中的收敛特性有显著的影响。
       我们利用这一分析来考虑在网络之前添加傅立叶特征映射的影响,并且我们表明这种映射对NTK的特征值谱和相应的网络在实际中的收敛特性有显著的影响。

Model and training code

官方代码

二维图像回归。

以下为官方实现的核心代码:this example,for each input image coordinate ( x , y ) (x, y) (x,y), the model predicts the associated color ( r , g , b ) (r, g, b) (r,g,b).
在这个任务中,我们训练MLP从2D输入像素坐标回归到图像的相应RGB值。对于每个测试图像,我们在一个有规则间隔的屏幕上训练一个MLP
包含1/4像素的网格,并报告剩余像素的测试错误。我们比较了自然图像数据集和文本图像数据集上的输入映射。

B_dict = {}
# Standard network - no mapping
B_dict['none'] = None
# Basic mapping
B_dict['basic'] = np.eye(2)
# Three different scales of Gaussian Fourier feature mappings
B_gauss = random.normal(rand_key, (mapping_size, 2))
for scale in [1., 10., 100.]:
    B_dict[f'gauss_{scale}'] = B_gauss * scale

# This should take about 2-3 minutes
outputs = {}
for k in tqdm(B_dict):
    outputs[k] = train_model(network_size, learning_rate, iters, B_dict[k], train_data, test_data)
init_fn, apply_fn = make_network(*network_size)
apply_fn(params, input_mapping(x, B)))
# JAX network definition
def make_network(num_layers, num_channels):
    layers = []
    for i in range(num_layers - 1):
        layers.append(stax.Dense(num_channels))
        layers.append(stax.Relu)
    layers.append(stax.Dense(3))
    layers.append(stax.Sigmoid)
    return stax.serial(*layers)

项目https://github.com/Atom-101/FourierFeat-Siren

Pytorch implementation and comparison of Fourier Feature Networks and Sinusoidal Representation Networks

MLP(
  (layers): Sequential(
    (0): Linear(in_features=512, out_features=256, bias=True)
    (1): ReLU(inplace=True)
    (2): Linear(in_features=256, out_features=256, bias=True)
    (3): ReLU(inplace=True)
    (4): Linear(in_features=256, out_features=256, bias=True)
    (5): ReLU(inplace=True)
    (6): Linear(in_features=256, out_features=3, bias=True)
  )
)
def map_x(x,B):
    xp = torch.matmul(2*math.pi*x,B)
    return torch.cat([torch.sin(xp),torch.cos(xp)],dim=-1)
def map_x(x,B):
    xp = torch.matmul(2*math.pi*x,B)
    return torch.sin(xp)

====================================================

# Image taken from authors' colab demo: https://colab.research.google.com/github/tancik/fourier-feature-networks/blob/master/Demo.ipynb
import numpy as np
import matplotlib.pyplot as plt
# from tqdm.notebook import tqdm as tqdm
from tqdm import *
import os, imageio
from imageio import imread,imsave
import torch
import torch.nn as nn
import torch.nn.functional as F
import math

# Download image, take a square crop from the center
image_url = 'https://live.staticflickr.com/7492/15677707699_d9d67acf9d_b.jpg'
img = imageio.imread(image_url)[..., :3] / 255.
c = [img.shape[0]//2, img.shape[1]//2]
r = 256
img = img[c[0]-r:c[0]+r, c[1]-r:c[1]+r]

# plt.imshow(img)
# plt.show()

# Create input pixel coordinates in the unit square
coords = np.linspace(0, 1, img.shape[0], endpoint=False)
x_test = np.stack(np.meshgrid(coords, coords), -1)
test_data = [x_test, img]
train_data = [x_test[::2,::2], img[::2,::2]]

#%%

class MLP(nn.Module):
    def __init__(self,depth=4,mapping_size=512,hidden_size=256):
        super().__init__()
        layers = []
        layers.append(nn.Linear(mapping_size,hidden_size))
        layers.append(nn.ReLU(inplace=True))
        # for _ in range(depth-2):
        #     layers.append(nn.Linear(hidden_size,hidden_size))
        #     layers.append(nn.ReLU(inplace=True))
        layers.append(nn.Linear(hidden_size,3))
        self.layers = nn.Sequential(*layers)
    def forward(self,x):
        return torch.sigmoid(self.layers(x))

#%%

xb,yb = torch.tensor(train_data[0]).reshape(-1,2),torch.tensor(train_data[1]).reshape(-1,3)
x_test,y_test = torch.tensor(test_data[0]).reshape(-1,2),torch.tensor(test_data[1]).reshape(-1,3)
xb,yb,x_test,y_test = xb.float().cuda(),yb.float().cuda(),x_test.float().cuda(),y_test.float().cuda()


#%% md

# Original Mapping

#%%

def map_x(x,B):
    xp = torch.matmul(2*math.pi*x,B)
    return torch.cat([torch.sin(xp),torch.cos(xp)],dim=-1)

#%%

model = MLP().cuda()
opt = torch.optim.Adam(model.parameters(),lr=1e-4)
loss = nn.MSELoss()
B = torch.randn(2,256).cuda() * 10
xt = map_x(xb,B)  # [65536,2] - [2,256] -> [65536,256]
for i in tqdm(range(1000)):
    print(i)
    ypred = model(xt)
    l = loss(ypred,yb)
    opt.zero_grad()
    l.backward()
    opt.step()
    model.eval()
    with torch.no_grad():
        ypreds = model(map_x(x_test, B))
        ypreds = ypreds.reshape(512, 512, 3)
        imsave('gaussion\\gaussion'+str(i)+'.png', (ypreds * 255).cpu().numpy())


# Preds
model.cpu().eval()
with torch.no_grad():
    ypreds = model(map_x(x_test,B.cpu()))
    ypreds = ypreds.reshape(512,512,3)
    imsave('gaussion.png',(ypreds*255).numpy() )


















========================================================================

# Image taken from authors' colab demo: https://colab.research.google.com/github/tancik/fourier-feature-networks/blob/master/Demo.ipynb
import numpy as np
import matplotlib.pyplot as plt
# from tqdm.notebook import tqdm as tqdm
from tqdm import *
import os, imageio
from imageio import imread,imsave
import torch
import torch.nn as nn
import torch.nn.functional as F
import math

# Download image, take a square crop from the center
image_url = 'https://live.staticflickr.com/7492/15677707699_d9d67acf9d_b.jpg'
img = imageio.imread(image_url)[..., :3] / 255.
c = [img.shape[0]//2, img.shape[1]//2]
r = 256
img = img[c[0]-r:c[0]+r, c[1]-r:c[1]+r]

# plt.imshow(img)
# plt.show()

# Create input pixel coordinates in the unit square
coords = np.linspace(0, 1, img.shape[0], endpoint=False)
x_test = np.stack(np.meshgrid(coords, coords), -1)
test_data = [x_test, img]
train_data = [x_test[::2,::2], img[::2,::2]]

#%%

class MLP(nn.Module):
    def __init__(self,depth=4,mapping_size=512,hidden_size=256):
        super().__init__()
        layers = []
        layers.append(nn.Linear(mapping_size,hidden_size))
        layers.append(nn.ReLU(inplace=True))
        # for _ in range(depth-2):
        #     layers.append(nn.Linear(hidden_size,hidden_size))
        #     layers.append(nn.ReLU(inplace=True))
        layers.append(nn.Linear(hidden_size,3))
        self.layers = nn.Sequential(*layers)
    def forward(self,x):
        return torch.sigmoid(self.layers(x))

#%%

xb,yb = torch.tensor(train_data[0]).reshape(-1,2),torch.tensor(train_data[1]).reshape(-1,3)
x_test,y_test = torch.tensor(test_data[0]).reshape(-1,2),torch.tensor(test_data[1]).reshape(-1,3)
xb,yb,x_test,y_test = xb.float().cuda(),yb.float().cuda(),x_test.float().cuda(),y_test.float().cuda()


#%% md

# Original Mapping

#%%

def map_x(x,B):
    xp = torch.matmul(2*math.pi*x,B)
    return torch.cat([torch.sin(xp),torch.cos(xp)],dim=-1)

#%%

model = MLP().cuda()
opt = torch.optim.Adam(model.parameters(),lr=1e-4)
loss = nn.MSELoss()

xb = torch.randn(65536,2).cuda()
B = torch.randn(2,256).cuda() * 10
xt = torch.randn(65536,256*2).cuda()#map_x(xb,B)  # [65536,2] - [2,256] -> [65536,256*2]
for i in tqdm(range(1000)):
    print(i)
    ypred = model(xt)
    l = loss(ypred,yb)
    opt.zero_grad()
    l.backward()
    opt.step()
    model.eval()
    with torch.no_grad():
        ypreds  = model(xt)#model(map_x(x_test, B))
        ypreds = ypreds.reshape(256, 256, 3)
        imsave('gaussion\\gaussion'+str(i)+'.png', (ypreds * 255).cpu().numpy())





class MLP(nn.Module):
    def __init__(self,outdim=3,mapping_size=512,hidden_size=256):
        super().__init__()
        layers = []
        layers.append(nn.Linear(mapping_size,hidden_size))
        layers.append(nn.ReLU(inplace=True))
        # for _ in range(depth-2):
        #     layers.append(nn.Linear(hidden_size,hidden_size))
        #     layers.append(nn.ReLU(inplace=True))
        layers.append(nn.Linear(hidden_size,outdim))
        self.layers = nn.Sequential(*layers)
    def forward(self,x):
        return torch.sigmoid(self.layers(x))

  1. Ali Rahimi and Benjamin Recht. Random features for large-scale kernel machines. NeurIPS,2007. ↩︎

编程速记(39):Matlab篇-提取图像高频/低频信息-基于DCT 一、简述 希望通过离散余弦变换获取某张图片的高频/低频信息 二、Demo 转灰图处理方式 RGB = imread('autumn.tif'); I = rgb2gray(RGB); J = dct2(I); figure imshow(log(abs(J)),[]) colormap(gca,jet(64)) colorbar J(abs(J) < 10) = 0; K = idct2... 阅读详情

相关推荐

Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional (傅立叶特征使网络在低维域学习高频函数)

我们展示了通过一个简单的傅里叶特征映射传递输入点可以使多层感知机(MLP)学习低维问题域中的高频函数。这些结果揭示了计算机视觉和图形的最新进展,通过使用 MLP 来表示复杂的3D 对象和场景,实现了最先进的结果。使用来自神经切线核(NTK)文献的工具,我们表明,标准的 MLP 无论在理论上还是在实践中都无法学习高频。为了克服这种光谱偏差,我们使用傅里叶特征映射将有效的 NTK 转换成带宽可调的平稳核。

weixin_53765004的博客 1387

随机傅里叶特征(Random Fourier Features)

随机傅里叶特征(Random Fourier Features) 如果使用核方法来预测测试集的样本x\displaystyle xx,比如核岭回归kernel ridge regression,我们需要计算: f(x)=∑i=1Ncik(xi,x) f( x) =\sum ^{N}_{i=1} c_{i} k( x_{i} ,x) f(x)=i=1∑N​ci​k(xi​,x) 需要O(Nd)\displaystyle O( Nd)O(Nd)其中N是样本量,d是x的维度大小。当样本量特别大的时候,这个复杂度是

Jie Qiao的专栏 6266

Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains论文笔记

论文信息 题目: Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains 作者及单位: Matthew Tancik1∗ Pratul P. Srinivasan1;2∗ Ben Mildenhall1∗ Sara Fridovich-Keil1 Nithin Raghavan1 Utkarsh Singhal1 Ravi Ramamoorthi3 Jonathan T. Barron2

山里娃的博客 2117

傅里叶特征学习高频:Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains

Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains 代码

ResumeProject的博客 1万+

NeRF、Instant-NGP背后的‘高频魔法’:一文搞懂傅里叶特征(Fourier Features)为什么这么有效

本文深入探讨了傅里叶特征(Fourier Features)在NeRF和Instant-NGP中的关键作用,揭示了其如何突破神经网络的高频学习瓶颈。通过频带控制、能量分配和空间解耦,傅里叶特征编码显著提升了3D场景重建的细节精度和实时渲染效率。文章还对比了不同参数选择策略,并提供了实际调参技巧,展示了傅里叶特征在神经渲染及其他领域的广泛应用。

weixin_32285357的博客 349

超越传统卷积!快速傅里叶卷积(Fast Fourier Convolution)新突破

性能提升:在真实世界和合成的夜间眩光去除数据集上,FF-Former的PSNR和SSIM指标分别提升了0.37 dB和0.41 dB,优于现有最先进方法。低频和高频分支:将FFC分为两个主要分支,一个与低通滤波器级联,另一个与高通滤波器级联,以实验发现颜色主要集中在低频部分,而轮廓和边缘在高频部分。快速傅里叶卷积(FFC):提出了一种新的着色网络,使用快速傅里叶卷积(FFC),能够有效地连接图像中的两个远距离位置,并具有全局感受野。

2401_88556812的博客 1604

从论文到代码:Fourier Feature Networks核心算法实现详解

Fourier Feature Networks(傅里叶特征网络)是一种强大的神经网络架构,通过引入傅里叶特征映射显著提升了神经网络对高维函数的拟合能力。本文将从理论到实践,带你了解这一创新算法的核心原理与实现方法,帮助你快速掌握如何将论文思想转化为可运行的代码。 ## 什么是Fourier Feature Networks? Fourier Feature Networks的核心创新在于将输

gitblog_00940的博客 352

A会常客【快速傅里叶卷积】火力全开,霸榜CVPR!

性能提升:在Places2、CelebA和Paris Streetview等多个基准数据集上的广泛实验表明,该方法在纹理捕获能力和表现力方面均优于最先进的方法,与现有最先进方法相比,在PSNR和LPIPS指标上分别提升了1.0 dB和0.1。性能提升:在合成数据集和真实老照片上的实验结果表明,该方法在定性和定量指标上均优于现有技术,PSNR提升了1.0 dB,SSIM提升了0.021,LPIPS降低了0.009,显示出该方法的优势。它基于卷积定理,即两个函数的卷积在时域中的乘积等于它们在频域中的乘积。

Aimoxin111的博客 1081

Fourier-DeepONet:傅里叶特征缓解谱偏置的工程笔记

在科学计算与深度学习交叉领域,神经网络拟合偏微分方程解场时常受“谱偏置”困扰:坐标型MLP优先学习低频,高频振荡细节收敛缓慢。傅里叶特征映射通过固定频率矩阵将低维坐标投影到正弦/余弦高维空间,使网络无需从零生成高频基,而以线性组合方式表达多尺度结构。这一思路在算子学习中形成Fourier-DeepONet:保留DeepONet的branch/trunk内积框架,在trunk输入侧加入傅里叶编码,从而在非规则采样、稀疏观测和连续坐标查询场景下提升高频解场拟合能力,并服务于偏微分方程代理模型与参数反演等任务。其

weixin_33624741的博客 265

物理信息神经网络与傅里叶特征编码技术解析

物理信息神经网络(PINNs)是一种结合深度学习与物理规律的先进技术,通过自动微分将控制方程编码为损失函数,实现偏微分方程的无网格求解。其核心挑战包括多目标损失函数的梯度失衡和对高频振荡解的拟合能力。傅里叶特征映射技术通过将输入坐标映射到高频空间,显著提升了神经网络的表示能力,尤其在处理周期性边界问题时表现突出。本文深入探讨了傅里叶特征编码的数学机理及其在物理信息神经网络中的应用,展示了其在Kirchhoff板振动和Helmholtz方程求解中的显著效果。通过实验验证,傅里叶特征编码不仅提高了训练效率,还降

chongtai6075的博客 289

深度Ritz方法与傅里叶特征映射:高维Cahn-Hilliard方程求解新范式

在科学计算领域,求解高维偏微分方程(PDE)是模拟复杂物理系统的核心挑战,传统网格方法面临维数灾难。深度学习方法,特别是物理信息神经网络,为高维PDE求解提供了新思路。其原理在于利用神经网络的万能逼近能力,将解函数参数化,并通过优化损失函数(如能量泛函)来学习满足PDE的解,从而规避了网格离散化带来的维度指数爆炸问题。这一技术价值在于能够高效处理传统方法难以触及的高维问题,如多相流、材料相分离等。应用场景广泛覆盖计算物理、材料科学和金融工程等领域。本文聚焦于结合深度Ritz方法与傅里叶特征映射,针对高维Ca

weixin_33749242的博客 442

论文研读系列——“Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains”

Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains arxiv [Submitted on 18 Jun 2020] 链接:arXiv:2006.10739 代码:https://github.com/tancik/fourier-feature-networks 摘要 这项研究表明,一种称为傅里叶特征映射的基本技术可以帮助名为多层感知器(MLP)的计算机模型更有效地学习图像和三维场景

Water8L的博客 1577

fourier-feature-networks:傅立叶特征使网络可以在低维域中学习高频功能

傅立叶特征使网络可以在低维域中学习高频功能 | * 1 , * 1,2 , * 1 , 1 , 1 , 1 , 3 , 2 , 1 1加州大学伯克利分校, 2 Google研究中心, 3加州大学圣地亚哥分校*表示相等的贡献 抽象的 我们表明,通过简单的傅立叶特征映射传递输入点使多层感知器(MLP)能够学习低维问题域中的高频函数。这些结果揭示了计算机视觉和图形学的最新进展,这些进展通过使用MLP表示复杂的3D对象和场景来实现了最新的结果。使用来自神经正切核(NTK)文献的工具,我们表明标准MLP在理论和实践上均无法学习高频。为了克服这种频谱偏差,我们使用傅立叶特征映射将有效的NTK转换为具有可调带宽的固定核。我们建议一种选择特定于问题的傅立叶特征的方法,该方法可以大大提高MLP在与计算机视觉和图形社区相关的低维回归任务上的性能。 代码 我们提供了一个作为该核心思想的简单

傅里叶特征提升模仿学习精度:机器人高精度控制实战

在机器人控制和强化学习领域,神经网络作为万能近似器,常被用于学习从状态到动作的复杂映射。然而,标准多层感知机存在频谱偏差,倾向于优先学习目标函数的低频分量,导致其难以捕捉细微状态变化所需的高频响应。这一原理限制了在需要高精度定位任务(如机械臂抓取、无人机精准降落)中的应用效果。为解决此问题,傅里叶特征编码技术应运而生,它通过对连续状态输入进行高频基函数投影,将数据映射到高维空间,从而显著增强网络对输入微小差异的感知能力。其技术价值在于以极低的计算成本,作为通用的特征预处理模块,无缝集成到行为克隆、DAgge

weixin_34174322的博客 355

用Raspberry Pi Imager重装树莓派系统

这次在官网无意中看到他们出了一个Raspberry Pi Imager的工具,可以直接完成镜像烧录操作,于是就尝了个鲜。选择“编辑设置”按钮,会弹出具体的设置信息,有三个tab,第一个是General信息,包括用户名、密码、wifi和语言设置;后续的操作就和我当初第一次装树莓派系统的操作差不多,在此就不再赘述,有兴趣的朋友可以看我以前的博文。完成定制化设置后,点击“保存”按钮,软件回到前面的提示框,连续点击两个“是”,开始写入SD。第二个下拉框选择你要安装的OS,点击黄框所在的选项,可以挑选更多OS。

天飓的技术博客 1085

CNN卷积神经网络手写数字识别实例及代码详解

本文的代码来自githup的Deep Learning的toolbox,是用Matlab实现的。感谢该toolbox的作者付出和分享。 我在应该该代码进行训练时,出现一些报错,如expand函数应用不对,flipall函数未定义等问题,对这些问题进行了修正,完成网络训练和验证。 本文mnist_uint8.mat的获取可以参照我的另一篇博客:MNIST数据库处理--matlab生成mnist_

VivienFu的专栏 6万+

【学习笔记】DiffFNO: Diffusion Fourier Neural Operator

DiffFNO是一种创新的图像超分辨率方法,结合了加权傅里叶神经算子(WFNO)和扩散模型的优势。其核心技术亮点包括:1)保留全频段信息并学习频率权重的WFNO;2)并行注意力神经算子捕捉空间细节;3)自适应ODE求解器大幅减少扩散步数。通过门控融合机制,模型能自适应地结合频谱和空间特征。不同于传统方法,DiffFNO将图像视为连续函数,支持任意尺度超分辨率。实验表明,该方法在保持计算效率的同时,显著提升了高频细节的重建质量。

2403_84639931的博客 979

AI大模型API中转站选型指南:12项关键指标与实战评估

随着AI大模型技术的快速迭代,企业面临着一个核心挑战:如何在基础模型频繁更新的背景下,为业务系统选择稳定可靠的API中转服务?本文基于真实生产环境测试数据,从12个关键维度系统评估主流API中转站平台,帮助技术团队在模型快速演进的生态中做出科学选型决策。 1. API中转站的核心价值与业务场景 1.1 什么是API中转站 API中转站(API Gateway/Aggregator)是连接业务系统与多个大模型厂商的中间层服务。它通过统一的接口封装了不同厂商的API协议差异,为企业提供标准化的模型调用能力。在实

weixin_29056101的博客 446

DiffFNO: Diffusion Fourier Neural Operator

本文提出DiffFNO,一种基于扩散框架与加权傅里叶神经算子(WFNO)的新型超分辨率方法。通过模式再平衡机制增强高频重建能力,并采用门控融合机制整合WFNO的频谱特征和AttnNO的空间特征。提出的自适应时间步长ODE求解器可动态调整积分步长,显著提升推理效率。实验表明,DiffFNO在PSNR指标上优于现有方法2-4dB,在多种缩放因子下均表现优异,同时保持较低的计算开销。该方法为超分辨率领域树立了新的性能标杆,在重建质量和计算效率间实现了最佳平衡。

m0_73143185的博客 882

【电力电子控制】基于强化学习的单相逆变器并网电流控制

本文将尝试以 DQN(Deep Q-Network)为例,设计并训练一个面向单相逆变器的智能控制器,实现对并网电流的精准调节。

weixin_62596197的博客 463

WinServer 2012 R2 搭建 AD 单域多站点 及 DNS各站点的子网掩码排序调整

WinServer 2012 R2 搭建 AD 单域多站点 及 DNS各站点的子网掩码排序调整

一直被模仿,从未被超越 5534

CVPR 2025 Oral | DiffFNO: Diffusion Fourier Neural Operator

该研究提出DiffFNO框架,通过融合扩散模型与改进的傅里叶神经算子(FNO)解决图像超分辨率问题。实验表明,DiffFNO在多个基准测试中PSNR指标提升2-4dB,且对训练未见尺度具有强泛化能力。

画心 2767

2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析

目标是优化风力涡轮机的功率调度,使其在给定的实时风速数据下,最小化涡轮机关键组件(如塔架和主轴)的疲劳损伤。问题的挑战在于,考虑通信延迟和测量噪声的同时,要确保功率输出与风速变化的响应快速且准确。

2401_82549447的博客 6629

PINA高级教程:利用傅里叶特征嵌入解决多尺度物理问题的实战案例

在计算物理和工程领域,多尺度问题一直是数值模拟的难点。传统数值方法往往需要大量计算资源才能捕捉不同尺度的特征,而物理知情神经网络(PINNs)为这类问题提供了新的解决方案。本文将详细介绍如何使用PINA(Physics-Informed Neural networks for Advanced modeling)中的傅里叶特征嵌入技术,高效解决具有多尺度特征的物理问题。 ## 多尺度物理问题的挑

gitblog_00835的博客 429

DIY玩家必备:用SSS1623芯片打造高性价比USB麦克风(附完整电路图)

本文详细介绍了如何利用SSS1623芯片DIY高性价比USB麦克风,包括元件选型、电路设计、PCB布局及调试技巧。通过完整的电路参考设计和实用建议,帮助电子爱好者打造专业级录音设备,实现免驱动即插即用功能。

weixin_29166013的博客 239

Coze智能体开发:扣子空间制作PPT功能

扣子空间内置了丰富的场景模板,涵盖人文历史、学术分享、研究报告、数据分析等场景,可以满足不同用户的需求。 你只需输入与制作 PPT 相关的提示词,Agent 就能基于这些提示词展示思考的过程,并自动生成完整的 PPT。

王国平的博客 2053
上一篇: 傅里叶特征学习高频:Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains
下一篇: python 高性能编程 性能分析
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值