8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

同时使用 tensorflow 和 pytorch 时出错

nicoramirezdev 2月前

62 0

我正在使用 tensorflow 进行模型训练,并使用 IsaacGym 和 pytorch tensor 进行模拟。当我在终端中使用命令行运行我的 python 脚本时,如果在 pytorch 之前导入 tensorflow,它会……

我正在使用 tensorflow 进行模型训练,并使用 IsaacGym 和 pytorch tensor 进行模拟。

当我使用终端中的命令行运行我的python脚本时,
如果在 pytorch 之前导入 tensorflow,则 Segmentation fault (core dumped) 当我在 GPU 上创建 pytorch 张量时会引发错误。
在调用深度学习相关函数时 DNN library is not found 会引发错误
但是当我使用 Vscode 调试器运行脚本时,即使没有断点,一切也正常运行。

为了确认问题是由于 tensorflow 和 pytorch 之间的冲突引起的,我创建了 test.py 一个

import torch
import tensorflow as tf

b = tf.convert_to_tensor([1, 2, 3])
a = torch.tensor([1, 2, 3], device='cuda')

如果在通过命令行运行时改变 pytorch 和 tensorflow 的顺序,我会得到相同的结果。

我使用的 tensorflow 和 pytorch 版本是

tensorflow : 2.13.0
pytorch: 1.13.1+cu117

cuda版本 nvidia-smi 是12.2

我想问一下
1.为什么只有在终端中通过命令行运行时才会发生错误,而使用 Vscode 调试器一切正常?2.有什么方法可以避免 tensorflow 和 pytorch 之间的这种冲突错误。

感谢任何想法和帮助!

帖子版权声明 1、本帖标题:同时使用 tensorflow 和 pytorch 时出错
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由nicoramirezdev在本站《tensorflow》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我正在开发一个 ASP.NET Core 应用程序,我有一个基本控制器,它定义了一个使用 ViewBag 设置标题的方法。我想在我的 Razor 视图中使用此方法来显示动态

    我正在开发一个 ASP.NET Core 应用程序,我有一个基本控制器,它定义了一个方法来使用设置标题 ViewBag 。我想在我的 Razor 视图中使用此方法来显示动态标题。

    这是具有该方法的基本控制器 SetHeaderTitle

    public abstract class BaseController
    {
        protected void SetHeaderTitle(string headerName)
        {
            ViewBag.HeaderTitle = headerName;
        }
    }
    

    在我派生的控制器中,我在构造函数内调用此方法:

    public class MaterialConstantNumbersController : BaseController
    {
        private const string HeaderName = "Constant numbers section";
    
        public MaterialConstantNumbersController(IMediator mediator) : base(mediator)
        {
            SetHeaderTitle(headerName: HeaderName);
        }
    }
    

    但是,当 Razor 页面加载时,标题栏不会显示。是什么原因导致其 ViewBag.HeaderTitle 无法在 Razor 视图中显示?

    在我的应用程序为每个控制器设置和显示不同的标题的最佳方法是什么?

    在我的控制器中 IMediator 使用依赖注入

    我尝试显示标题的 Razor 视图设置为访问 ViewBag.HeaderTitle .

    我已经在所有操作中调用此方法,但这种方法并不可靠,而且是重复的工作。

  • y2bd 2月前 0 只看Ta
    引用 3

    这种方法不能按预期正确工作的主要原因是,构造函数在操作方法执行期间在操作方法和 viewBagsets 之前运行。您可以考虑 2 个步骤:

    1- 将 setHeaderTitle 移至操作过滤器:您可以创建一个操作过滤器,在操作方法执行之前设置标题,而不是在构造函数中设置标题。这可确保在呈现视图之前正确设置 viewbag。

    public class HeaderTitleFilter : ActionFilterAttribute
    {
        private readonly string _headerTitle;
    
        public HeaderTitleFilter(string headerTitle)
        {
            _headerTitle = headerTitle;
        }
    
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var controller = context.Controller as Controller;
            if (controller != null)
            {
                controller.ViewBag.HeaderTitle = _headerTitle;
            }
            base.OnActionExecuting(context);
        }
    }
    

    并在控制器中

    [HeaderTitleFilter(HeaderName)]
    public class MaterialConstantNumbersController{}
    

    2- 覆盖 baseController 中的 onactionexecuting 以在执行任何操作方法之前设置标题。

    public abstract class BaseController : Controller
    {
        protected virtual string HeaderTitle { get; set; }
    
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            ViewBag.HeaderTitle = HeaderTitle;
        }
    }
    
    public class MaterialConstantNumbersController : BaseController
    {
        private const string HeaderName = "Constant numbers section";
    
        public MaterialConstantNumbersController(IMediator mediator) : base()
        {
            HeaderTitle = HeaderName;
        }
    }
    

    希望这些能帮到你。

  • 我正在开发一个使用 Microsoft Entra ID 进行身份验证的 ASP.NET Core MVC 应用程序。该应用程序旨在支持多个租户,我想限制访问权限,以便只有...

    我正在开发一个使用 Microsoft Entra ID 进行身份验证的 ASP.NET Core MVC 应用程序。该应用程序旨在支持多个租户,我想限制访问,以便只有特定租户的用户才能登录。我 AllowedTenants 在文件中配置了一个数组 appsettings.json ,并试图阻止未包含在此数组中的租户的用户。尽管如此,我当前的实现并未按预期运行,未经授权的租户的用户仍然可以访问该应用程序。这是我的设置:

    Program.cs

    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
    
            builder.Services.AddControllersWithViews();
    
            var sqlConnectionString = builder.Configuration.GetConnectionString("DbContext");
    
            builder.Services.AddDbContext<MyAppContext>(options =>
                options.UseSqlServer(sqlConnectionString ?? throw new InvalidOperationException("Connection string not found.")));
    
            var allowedTenants = builder.Configuration.GetSection("AzureAd:AllowedTenants").Get<string[]>();
    
            builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
            .EnableTokenAcquisitionToCallDownstreamApi(builder.Configuration.GetSection("DownstreamApis:MicrosoftGraph:Scopes").Get<string[]>())
                .AddMicrosoftGraph(builder.Configuration.GetSection("DownstreamApis:MicrosoftGraph"))
                .AddInMemoryTokenCaches();
    
            builder.Services.Configure<JwtBearerOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
            {
                var existingOnTokenValidatedHandler = options.Events.OnTokenValidated;
                options.Events.OnTokenValidated = async context =>
                {
                    await existingOnTokenValidatedHandler(context);
                    var tenantId = context.Principal?.FindFirst("tid")?.Value;
                    if (!allowedTenants!.Contains(tenantId))
                    {
                        throw new UnauthorizedAccessException("This tenant is not authorized");
                    }
                };
            });
    
            builder.Services.AddAuthorization(options =>
            {
                options.FallbackPolicy = options.DefaultPolicy;
            });
    
            builder.Services.AddRazorPages(options =>
            {
            })
            .AddMvcOptions(options => { })
            .AddMicrosoftIdentityUI();
    
            builder.Services.AddScoped<IFormFileCheckerInterface, IFormFileChecker>();
    
            var app = builder.Build();
    
            if (!app.Environment.IsDevelopment())
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
    
            app.UseHttpsRedirection();
            app.UseStaticFiles();
    
            app.UseRouting();
    
            app.UseAuthentication();
            app.UseAuthorization();
    
            app.MapRazorPages();
    
            app.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
    
            app.UseRewriter(
                new RewriteOptions().Add(
                    context =>
                    {
                        if (context.HttpContext.Request.Path == "/MicrosoftIdentity/Account/SignedOut")
                        { context.HttpContext.Response.Redirect("/Home/Index"); }
                    })
            );
    
            app.Run();
        }
    }
    

    appsettings.json

    {
      "AzureAd": {
        "Instance": "micrososft_instance",
        "Domain": "my_domain",
        "ClientId": "client_id",
        "ClientSecret": "client_secret",
        "TenantId": "organizations",
        "CallbackPath": "/signin-oidc",
        "AllowedTenants": [ "tenant_one", "tenant_two" ]
      },
      "DownstreamApis": {
        "MicrosoftGraph": {
          "BaseUrl": "https://graph.microsoft.com/v1.0",
          "Scopes": [ "User.Read", "User.ReadWrite.All" ]
        }
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "ConnectionStrings": {
        "DbContext": "db_context"
      },
      "AllowedHosts": "*"
    }
    

    控制器功能:

    [HttpGet]
    [Authorize]
    public IActionResult Index()
    {
        try
        {
            return View();
        }
        catch (Exception ex) 
        {
            _logger.LogError("An error occurred when trying to return Index page: " + ex.Message);
            return StatusCode(500, "An error occurred when trying to return Index page");
        }
    }
    

    我的期望是:

    我预计应用程序会抛出一个异常 UnauthorizedAccessException 并拒绝数组中未列出的租户用户访问 AllowedTenants 。但是,未经授权的租户用户仍然可以访问该应用程序。

    我的实施中可能存在什么错误?我该如何根据租户 ID 正确地限制访问?

  • 1.无法在控制器构造函数中调用 SetHeaderTitle 方法,它需要在每个操作中调用。

    2.您在控制器中对 IMediator 使用了依赖注入。我认为您犯了一些错误。所以我为您写了一个例子。

    以下是一个例子

    1).BaseController.cs

    using MediatR;
    using Microsoft.AspNetCore.Mvc;
    
    namespace webApi2.Controllers
    {
        public abstract class BaseController : Controller
        {
            private readonly IMediator _mediator;
            public BaseController(IMediator mediator) {
                _mediator = mediator;
            }
            protected void SetHeaderTitle(string headerName)
            {
                ViewBag.HeaderTitle = headerName;
            }
        }
    }
    

    2). 产品控制器.cs

    using MediatR;
    using Microsoft.AspNetCore.Mvc;
    
    namespace webApi2.Controllers
    {
        public class ProductsController : BaseController
        {
            private readonly IMediator _mediator;
            private const string HeaderName = "Constant numbers section";
            public ProductsController(IMediator mediator) : base(mediator)
            {
                _mediator = mediator;
            }
            public IActionResult Index()
            {
                SetHeaderTitle(headerName: HeaderName);
                return View();
            }
        }
    }
    

    3). index.cshtml

    enter image description here

    结果如下:

    enter image description here

  • 由于我无法重现您的问题,因此这里有一些需要检查的点。您的身份验证是否正确执行,尤其是 OnTokenValidated,请检查日志。您的令牌怎么样,它是否包含必要的 ID 或信息?

  • 我的 Blazor (.Net 8) 应用程序中出现以下问题。我尝试使用 YARP Map Forwarder (Microsoft.Extensions.ServiceDiscovery.Yarp 8.0.2) 转发从 Bla 到达 Blazor 服务器的请求...

    我的 Blazor (.Net 8) 应用程序中出现以下问题。我尝试使用 YARP Map Forwarder (Microsoft.Extensions.ServiceDiscovery.Yarp 8.0.2) 将从 Blazor 客户端到达 Blazor 服务器的请求转发到后端服务,作为一种反向代理。它总是返回 502 Bad Gateway。我在这里遗漏了什么?

    ...
    app.UseRouting();
    app.UseHttpsRedirection();
    
    app.UseStaticFiles();
    app.UseAntiforgery();
    app.UseAuthorization();
    
    app.MapRazorComponents<App>()
        .AddInteractiveServerRenderMode()
        .AddInteractiveWebAssemblyRenderMode()
        .AddAdditionalAssemblies(typeof(BlazorProject.Client._Imports).Assembly);
    
    // Always returns 502. As far as i can tell it forwards the request to itself instead of localhost:5000, but i may be wrong here
    app.MapForwarder("/weather-forecast", "http://localhost:5000", transformBuilder =>
    {
        transformBuilder.AddRequestTransform(async transformContext =>
        {
            var accessToken = await transformContext.HttpContext.GetTokenAsync("access_token");
            transformContext.ProxyRequest.Headers.Authorization = new("Bearer", accessToken);
        });
    }).RequireAuthorization();
    

    我曾尝试添加 new ForwarderRequestConfig { Version = Version.Parse("1.1") } 到 MapForwarder,但没有成功。

    我也尝试过 ProxyReqeust 通过操作 transformContext 来直接设置路线或者进行标头操作,但没有任何效果。

    但是通过自定义处理也 app.Map 可以正常工作。

    // Custom example
    var httpClient = new HttpMessageInvoker(new SocketsHttpHandler
    {
        UseProxy = false,
        AllowAutoRedirect = false,
        AutomaticDecompression = DecompressionMethods.None,
        UseCookies = false,
        EnableMultipleHttp2Connections = true,
        ActivityHeadersPropagator = new ReverseProxyPropagator(DistributedContextPropagator.Current),
        ConnectTimeout = TimeSpan.FromSeconds(15),
    });
    
    
    // Setup our own request transform class
    var transformer = new CustomHttpTransformer();
    var requestConfig = new ForwarderRequestConfig { ActivityTimeout = TimeSpan.FromSeconds(10)};
    
    app.Map("/weather-forecast", async (HttpContext httpContext, IHttpForwarder forwarder) =>
    {
        var error = await forwarder.SendAsync(httpContext, "http://localhost:5000",
            httpClient, requestConfig, transformer);
        // Check if the operation was successful
        if (error != ForwarderError.None)
        {
            var errorFeature = httpContext.GetForwarderErrorFeature();
            throw errorFeature?.Exception ?? new Exception($"ForwarderError: {error}. Getting standard exception failed");
        }
    }).RequireAuthorization();
    
    // Content of CustomHttpTransformer
    public override async ValueTask TransformRequestAsync(HttpContext httpContext,
        HttpRequestMessage proxyRequest, string destinationPrefix, CancellationToken cancellationToken)
    {
        // Copy all request headers
        await base.TransformRequestAsync(httpContext, proxyRequest, destinationPrefix, cancellationToken);
    
        // Customize the query string:
        var queryContext = new QueryTransformContext(httpContext.Request);
    
        // Set custom uri
        proxyRequest.RequestUri = RequestUtilities.MakeDestinationAddress($"{destinationPrefix}", httpContext.Request.Path, queryContext.QueryString);
    
        // Suppress the original request header, use the one from the destination Uri.
        proxyRequest.Headers.Host = null;
    
        // Set authorization Headers
        var accessToken = await httpContext.GetTokenAsync("access_token");
        proxyRequest.Headers.Authorization = new("Bearer", accessToken);
    }
    
  • 在我的razor页面应用程序中出现此错误:严重性代码描述项目文件行抑制StateError(活动)CS1579 foreach语句无法对类型为'的变量进行操作

    在我的 Razor 页面应用程序中出现此错误:

    严重性代码描述项目文件行抑制StateError(活动)CS1579 foreach语句无法对“WorkingVote”类型的变量进行操作,因为“WorkingVote”不包含“GetEnumerator”的公共实例或扩展定义VoteTracker S:\ VisualStudioProjects \ VoteTracker \ Pages \ WorkingVotes \ Edit.cshtml

    它发生的行位于我的 Edit.cshtml 表格主体中。

    <tbody>
        @foreach (var obj in Model.WorkingVote)
        {...
    

    Model.WorkingVote 带有下划线。

    我查找了这个错误,也阅读了这里关于这个错误的所有帖子,但没有看到如何直接将它应用到我的应用程序中。我知道它正在寻找“获取枚举器”,并且需要某种类型的集合?我尝试将“公共 WorkingVote”更改为 IEnumerable 或 List,但这会给我带来更多错误。

    这是我的.cs:

    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.EntityFrameworkCore;
    
    namespace VoteTracker.Pages.WorkingVotes;
    
    [BindProperties]
    
    public class EditModel : PageModel
    {
        private readonly ApplicationDbContext _db;
        public EditModel(ApplicationDbContext db)
        {
            _db = db;
        }
    
        public WorkingVote? WorkingVote { get; set; } 
    
        public IEnumerable<Committee> DisplayCommitteeData { get; set; }
        public IEnumerable<VoteType> DisplayVoteTypeData { get; set; }
        public IEnumerable<Supervisor> DisplaySupervisorData { get; set; }
        public IEnumerable<Status> DisplayStatusData { get; set; }
    
        public async Task OnGetAsync(int Id)
        {
            WorkingVote = _db.WorkingVote.Find(Id);
            DisplayCommitteeData = await _db.Committee.ToListAsync();
            DisplayVoteTypeData = await _db.VoteType.ToListAsync();
            DisplaySupervisorData = await _db.Supervisor.ToListAsync();
            DisplayStatusData = await _db.Status.ToListAsync();
        }
    
        public async Task<IActionResult> OnPost()
        {
            if (ModelState.IsValid)
            {
                _db.WorkingVote.Update(WorkingVote);
                await _db.SaveChangesAsync();
                TempData["success"] = "Vote cast successfully.";
                return RedirectToPage("Index");
            }
            return Page();
        }
    }
    

    我已经花了一段时间来测试不同的东西,但确实需要一些帮助。谢谢!

  • 在您的代码中,WorkingVote 是一个单一对象,而不是一个集合。如果您想在页面中迭代 WorkingVote 集合,则需要 IEnumerable<WorkingVote> 在 EditModel 中定义一个集合。以下是供您参考的示例:

    public class EditModel : PageModel
    {
        private readonly ApplicationDbContext _db;
        public EditModel(ApplicationDbContext db)
        {
            _db = db;
        }
    
        public IEnumerable<WorkingVote> WorkingVotes { get; set; }
    
    
    
        public async Task OnGetAsync(int Id)
        {
            WorkingVotes = await _db.WorkingVotes.Where(v => v.Id == Id).ToListAsync();
    
        }
    
        public async Task<IActionResult> OnPost()
        {
            if (ModelState.IsValid)
            {
                _db.WorkingVotes.UpdateRange(WorkingVotes);
                await _db.SaveChangesAsync();
                TempData["success"] = "Vote cast successfully.";
                return RedirectToPage("Index");
            }
            return Page();
        }
    }
    

    看法:

     @page "{id:int}"
        @model EditModel
        
        <tbody>
            @foreach (var obj in Model.WorkingVotes)
            {
                <tr> @obj.Name </tr>
            }
        </tbody>
    

    当我查询 id 1 时:

    enter image description here enter image description here

  • 如果您查看 asp.net core Web 服务器的调试输出,您应该能够看到来自 Microsoft.Extensions.ServiceDiscovery.Yarp 的 ServiceDiscovery 不起作用,类似于:警告:Yarp.ReverseProxy.Forwarder.HttpForwarder[48] 没有提供程序支持提供的服务名称,'

返回
作者最近主题: