当前位置:网络安全 > vs2010中配置tensorflow_windows 的GPU版本tensorflow,keras,tensorlayer搭建 - CSDN博客

vs2010中配置tensorflow_windows 的GPU版本tensorflow,keras,tensorlayer搭建 - CSDN博客

  • 发布:2023-09-22 07:58

由于本人希望从DirectX11的基础sample开始学习,所以选择了

VS2010+Microsoft DirectX SDK(June 2010)的开发环境

学习龙书DirectX11版本,运行课本的Sample必须要在VS2010的环境下,不然会报错,想要完全专注于DX11的学习,那么请选择VS2010。

安装Microsoft DirectX SDK(June 2010)

安装失败 S1023的解决方案 卸载

Microsoft Visual C++ 2010 x86 Redistributable

Microsoft Visual C++ 2010 x64 Redistributable

以及所有Runtime文件。

如果还是报错,查看C:\Windows\Logs的日志DXError [12/10/16 15:44:31] module: dxupdate(Jun 2 2010), file: dxupdate.cpp, line: 2223, function: RegisterDLL

Failed API: LoadLibraryEx()

Error: (193) - %1 不是有效的 Win32 应用程序。

Unable to load C:\Windows\system32\xactengine2_0.dll.

[12/10/16 15:44:31] module: dxupdate(Jun 2 2010), file: dxupdate.cpp, line: 5848, function: DirectXUpdateInstallPlugIn

RegisterDllFromSection() failed.

[12/10/16 15:44:31] module: dsetup32(Jun 2 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn

DirectXUpdateInstallPlugIn() failed.

[12/10/16 15:44:31] module: dsetup32(Jun 2 2010), file: setup.cpp, line: 1723, function: CSetup::SetupForDirectX

InstallPlugIn() failed.

此时参照此博客的解决方案

解决Unable to load C:\Windows\system32\xactengine2_0.dll.

DirectX11在VS2010的配置

基本配置可以参考 浅墨逐梦旅程

博主可能点背,遇到了各种各样的问题

#include

#include

#include

LPDIRECT3D9 g_pD3D;

LPDIRECT3DDEVICE9 g_pd3dDevice;

LPDIRECT3DVERTEXBUFFER9 g_pVB;

struct CUSTOMVERTEX{

FLOAT x, y, z;

DWORD color;

};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)

HRESULT InitObject()

{

CUSTOMVERTEX triangle[] =

{

{ -1.0f,-1.0f, 0.0f, 0xffff0000, },

{ 1.0f,-1.0f, 0.0f, 0xff0000ff, },

{ 0.0f, 1.0f, 0.0f, 0xffffffff, }

};

if (FAILED(g_pd3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL)))

return E_FAIL;

VOID* pVertices;

if (FAILED(g_pVB->Lock(0,sizeof(triangle), &pVertices, 0)))

return E_FAIL;

memcpy(pVertices, triangle, sizeof(triangle));

g_pVB->Unlock();

return S_OK;

}

HRESULT InitD3D(HWND hWnd)

{

g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);

if (NULL == g_pD3D)

return E_FAIL;

D3DPRESENT_PARAMETERS d3dpp;

ZeroMemory(&d3dpp, sizeof(d3dpp));

d3dpp.Windowed = TRUE;

d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;

d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

if(FAILED( g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,

hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,

&d3dpp, &g_pd3dDevice)))

{

return E_FAIL;

}

g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

// Turn off D3D lighting, since we are providing our own vertex colors

g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );

if (FAILED(InitObject()))

return E_FAIL;

return S_OK;

}

void SetupMatrices()

{

D3DXMATRIX matWorld;

UINT iTime = timeGetTime() % 1000;

FLOAT fAngle = iTime * ( 2.0f * D3DX_PI ) / 1000.0f;

D3DXMatrixRotationY(&matWorld, fAngle);

g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);

D3DXVECTOR3 vEyePt(0.0f, 3.0f, -5.0f);

D3DXVECTOR3 vLookAtPt(0.0f, 0.0f, 0.0f);

D3DXVECTOR3 vUp(0.0f, 1.0f, 0.0f);

D3DXMATRIXA16 matView;

D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookAtPt, &vUp);

g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);

D3DXMATRIX matPoj;

D3DXMatrixPerspectiveFovLH(&matPoj, D3DX_PI/4, 1.0f, 1.0f, 100.0f);

g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matPoj);

}

void Render()

{

g_pd3dDevice->Clear(0,NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0);

g_pd3dDevice->BeginScene();

SetupMatrices();

g_pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX));

g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);

g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

g_pd3dDevice->EndScene();

g_pd3dDevice->Present(NULL, NULL, NULL, NULL);

}

void Cleanup()

{

if (g_pd3dDevice)

g_pd3dDevice->Release();

if (g_pD3D)

g_pD3D->Release();

if (g_pVB)

g_pVB->Release();

}

LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch (msg)

{

case WM_DESTROY:

PostQuitMessage(0);

return 0;

case WM_PAINT:

ValidateRect(hWnd, NULL);

return 0;

}

return DefWindowProc(hWnd, msg, wParam, lParam);

}

INT WINAPI WinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )

{

WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0, 0, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"Direct3D", NULL};

RegisterClassEx(&wc);

// Create the application window

HWND hWnd = CreateWindow(L"Direct3D",

L"Learn", WS_OVERLAPPEDWINDOW,

100, 100, 300, 300,

GetDesktopWindow(),

NULL, wc.hInstance, NULL);

//

ShowWindow(hWnd, SW_SHOW);

if (SUCCEEDED(InitD3D(hWnd)))

{

ShowWindow(hWnd, SW_SHOWDEFAULT);

UpdateWindow(hWnd);

MSG msg;

ZeroMemory(&msg, sizeof(msg));

while (msg.message != WM_QUIT)

{

if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

else

Render();

}

}

UnregisterClass( L"Direct3D", wc.hInstance );

Cleanup();

return nShowCmd;

}

这是一个Sample,运行时编译器报错。

错误描述:

1>正在编译资源… 1>正在编译资源清单… 1>正在链接… 1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 1>生成日志保存在“file://E:\HelloC\ShapeFill V11\ShapeFill\Debug\ShapeFill.log” 1>ShapeFill- 1个错误,0个警告 ========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========

此时可以通过两种方法解决:

解决方案:

第一步:将 项目——项目属性——配置属性——连接器——清单文件——嵌入清单 “是”改为“否”。若还不能解决问题进入第二步。

第二步:查看计算机是否为64bit操作系统,如是,继续如下操作。 查找是否有两个cvtres.exe。 …\vc\bin\cvtres.exe(VS2010的安装目录) C:\Windows\www.sychzs.cn\Framework\v4.0.30319\cvtres.exe 右键属性—详细信息, 查看两者版本号,删除/重命名较旧的版本。

第二种方法可以避免每次都需要进行设置。

运行成功,可是编译器提醒缺少MSVCR100D.dll,此时只需要在网上下载MSVCR100D.dll放到C:\Windows\SysWOW64(64位机器放在这个目录)下即可。

此时终于成功了!

接下来终于可以正式的开始DirectX11的学习了。

安装VS编译器

在windows安装NVIDIA的CUDA驱动需要先安装VS的编译器,VS最低的版本是VS2010,网上去下个破解自己安装一下就行,这里不做特别说明。

安装CUDA

新版本的CUDA已经安装起来相当方便了,只需要去官网根据操作系统选择自己对应的版本cuda就行,下载建议使用local版本,而不是network版本,离线安装就是要方便一点。

现在下来之后直接双击安装,除非C盘存在空间的问题,否则不建议更改安装目录,因为默认的安装目录比较好找。

安装cudnn

cudnn是NVIDIA公司推出的一个卷积计算库,其实就是几个函数,在官网上下载对应版本的Cudnn源码,cudnn不是开源,需要你去注册一个NVIDIA账号填个问卷才能下载。然后根据cuda的版本和windows的版本选择相应的cudnn源码,不知道为什么官网没有给出win8版本的,我想win7和win10版本应该可以兼容使用吧。

下载下来之后直接解压,解压之后有三个夹bin,lib,include,有过VS开发经验的人能够懂这是什么,bin的文件夹路径把添加到path里面去,lib是dll,include是源码,都要对应的添加,不过可能有些电脑小白问path是啥啊。

如果你觉得这个有点慌的话,你把解压之后的文件直接将cudnn下的所有文件夹复制到cuda的根目录就可以,文件夹会自动合并,你会发现cuda的根目录也有include,bin,lib三个夹,cuda的根目录应该在C盘program file什么的里面,就是你安装cuda的那个路径。

win7和win10直接下载编译好了的版本,win8亲测可以用win7版本,如果不能使用的话就自己用VS重新编译一下吧。

检验

安装好了之后,在python环境里面import tensorflow

五个success里面有一个就是cudnn,如下图,如果success成功了就说明安装好了

Anaconda环境搭建

Tensorflow在最新版本0.12目前支持了windows系统,虽然还有部分功能不能使用,但是足够平时使用了,但是这个版本的tensorflow只支持py3.5。为了规避各种麻烦的库环境搭建的问题,最脑残的安装方式是下载最新版的Anaconda3安装,这里给出官方下载链接,下载版本是python3.5对应的Anaconda4.2.0。

下载下来之后就双击一路正常安装就行。

Tensorflow安装

去Tensorflow官网现在tensorflow0.12.0的CPU版本,下载链接,如果你要现在GPU版本,你也可以进入tensorflow官网下载编译好的GPU版本对应的whl文件。

然后cmd进入命令模式,把下载的whl文件放到你的系统根目录(就是cmd模式下默认的那个路径,当然你也可以cd到你whl文件存在的路径安装),运行以下命令:

pip install tensorflow

###或者下载安装文件用下面这种方式

pip install tensorflow-0.12.0rc0-cp35-cp35m-win_amd64.whl

GPU版本用以下命令

pip install tensorflow-gpu

keras、Tensorlayer安装

因为之前已经安装了Anaconda,所以安装keras和Tensorlayer就变得十分方便,只要进入cmd命令,运行以下命令:

pip install keras

pip install tensorlayer

就可以完成傻瓜式的安装。

测试

Anaconda自带matlab风格的IDE Spyder,你可以用Spyder进入界面运行python文件,也可以直接cmd命令模式下测试,只需要运行以下命令:

python

进入python环境

import tensorflow

import keras

import tensorlayer

如果没有error就说明安装成功,有GPU的warning没关系,因为只是用CPU版本的而已。

最近在折腾了一下VS2012的OpenCVS2.4.5配置,同VS2010下基本相同,做个简单的记录,以备日后查阅。

1. 安装OpenCV

从OpenCV官网:http://www.sychzs.cn/下载OpenCV安装包,放到想要安装的位置双击,即可安装,我这里是安装在C:\Program Files\opencv的位置

2. 新建工程

在这里就使用简单的控制程序进行测试了,截图如图一所示:

图 1 新建32位控制台项目

3.添加依赖

在新建好项目之后,为了能使用OpenCV的函数库我们首先需要为该项目添加好OpenCV依赖,具体步骤图2。

项目名称->右键->属性

图 2 添加VC++目录依

???? 2. 添加VC++目录依赖,首先在VC++ Directories(C++目录)中的Executable Directories中添加好C:\Program Files\opencv\build\x86\vc11\bin;在Include Directories中添加C:\Program Files\opencv\build\include;C:\Program Files\opencv\build\include\opencv;C:\Program Files\opencv\build\include\opencv2;在Library Directories中添加lib依赖,为该项增加路径C:\Program Files\opencv\build\x86\vc11\lib

???? 3. 添加连接器依赖,在属性窗口中选择连接器->输入(linker->input),如图3所示。在附加依赖(Additional Dependencies)那项增加该OpenCV中所需要的包,不一定要全部加上,选择部分即可,注意添加的时候包要带后缀名,添加完一个后,回车换行再加下一个,添加完如图4所示。

图 3 添加Linker包依赖

图 4 添加完成后结果

4. 示例代码测试

在第三部,我们已经完成了本项目所需要的OpenCV包的配置了,下面我们可以用一小段OpenCV项目代码来测试配置是否准确,代码如下:

// OpenCVTest.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

using namespace std;

using namespace cv;

int _tmain(int argc, _TCHAR* argv[])

{

const char* imagename = "D:\\Image\\yuner.jpg";

//从文件中读入图像

Mat img = imread(imagename);

//如果读入图像失败

if(img.empty())

{

fprintf(stderr, "Can not load image %s\n", imagename);

return -1;

}

//显示图像

imshow("YunEr", img);

//此函数等待按键,按键盘任意键就返回

waitKey();

return 0;

}

运行结果如下,这里就不对该程序进行解释了,这程序的主要功能是显示了一张允儿的照片,运行结果如图5。

图 5 运行结果

5. 定制OpenCV工程模板

从以上的配置步骤我们知道,在VS2012中新建OpenCV工程,需要进行很多步骤的琐碎步骤进行配置,中间容易出错,尤其是对于我们初学者,需要新建很多测试工程,如果每个都去配置那就太麻烦了。就目前看来,解决的办法有两种:一是为以后所有的项目中添加OpenCV那套配置,该方法在网上的博客中也写的最多如:http://www.sychzs.cn/note/271142663/;二是同Word等类似,VS为我们提供了一个项目模板功能,我们可以新建一个OpenCV模板,之后的工程就根据该模板新建即可。下面就是第二种方法的步骤了:

同原来一样,我们新建一个工程,这里同样选为32位控制台类型,新建完后,按照上面所说的步骤为其添加好OpenCV依赖,添加完依赖如图6所示

图 6 OpenCV模板

???? 2.导出模板

单击文件->导出模板(File->Explorer Templete),然后单击下一步,选择Project Templete,再选择一张图片作为模板标识,单击完成即可,生成的模板以zip文件存放在VS的默认目录下,我的存储在:C:\Users\wangmurong\Documents\Visual Studio 2012\My Exported Templates

图 7 导出模板

从模板新建

创建好模板以后,我们就可以根据模板来新建了,同样,选择新建32控制台程序,如图8所示,我们可以看到,我们的模板已经被添加到默认新建模板中去了。根据该模板新建的工程就可以直接使用OpenCV了,不用再添加了,当然,如果模板中的lib文件不够的话还是需要再手动添加的。

图 8 根据模板新建

最后再添加几个常用的OpenCV学习网址吧:

http://www.sychzs.cn/http://www.sychzs.cn/index.php/%E9%A6%96%E9%A1%B5http://www.sychzs.cn/neo/groups/OpenCV/info

相关文章

热门推荐