Windows下Visual Studio安装部署Tensorflow开始写一个简单的小网络

本文详细介绍了如何在Windows上安装TensorflowCPU版本,包括下载、解压、设置环境变量和VisualStudio配置。随后提供了一个使用C++API创建简单神经网络的实例,展示了从构建图到运行计算的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 安装Tensorflow

1.1 下载

官方链接:
Windows(仅支持 CPU)
Windows(仅支持 GPU
这里我下的是cpu版,
1

1.2 解压

解压缩库文件:将下载的TensorFlow C库文件解压缩到自己选择的目录中。
这里我的路径是:D:\visualstudio\DownloadTools\libtensorflow-cpu-windows-x86_64-2.6.0

1.3 设置环境变量

在系统变量中,找到"Path"变量,并添加TensorFlow C库的路径到其中。
![2(https://img-blog.csdnimg.cn/direct/1a24cbea5c8346c6bb123379c5042969.png)

1.4 VisualStudio配置

打开项目属性:
在“VC++目录”选项卡中,将TensorFlow C库的头文件路径添加到“包含目录”列表中。
2

在“链接器”选项卡中,在右侧面板的“常规”下拉菜单中,选择“附加库目录”,添加TensorFlow C库的库文件路径
3
在“链接器”选项卡中,将“附加依赖项”设置为“tensorflow.lib”。这将告诉链接器链接TensorFlow C库。
4
在“C/C++”选项卡中,将“预处理器”设置为“_CRT_SECURE_NO_WARNINGS”,以避免由于使用不安全的函数而导致的编译器警告。
5
运行测试代码:

#include <stdio.h>
#include <tensorflow/c/c_api.h>

int main() {
	printf("Hello from TensorFlow C library version %s\n", TF_Version());
	return 0;
}

Ps:
中间出现提示找不到tensorflow.dll 👇
解决:将 TensorFlow DLL 文件手动复制到您的项目的输出目录(即包含可执行文件的目录)。这样可以确保程序能够找到并加载 TensorFlow DLL 文件。

在这里插入图片描述

2. 一个简单的小网络

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tensorflow/c/c_api.h>

#define TF_CHECK_OK(status) \
  if (TF_GetCode(status) != TF_OK) { \
    fprintf(stderr, "Error at line %d: %s", __LINE__, TF_Message(status)); \
    exit(1); \
  }

int main() {
    // 创建一个图
    TF_Graph* graph = TF_NewGraph();

    // 创建一个会话
    TF_Status* status = TF_NewStatus();
    TF_SessionOptions* session_options = TF_NewSessionOptions();
    TF_Session* session = TF_NewSession(graph, session_options, status);
    TF_CHECK_OK(status);

    // 构建计算图

    // 创建一个占位符操作(Placeholder)作为输入节点
    TF_Output input_op = { TF_GraphOperationByName(graph, "input"), 0 };
    if (input_op.oper == NULL) {
        fprintf(stderr, "Failed to find input operation\n");
        exit(1);
    }

    // 创建一个常量操作(Const),代表常数值
    float value = 3.14;
    const int64_t dims[] = { 0 };
    TF_Tensor* tensor = TF_AllocateTensor(TF_FLOAT, dims, 0, sizeof(float));
    memcpy(TF_TensorData(tensor), &value, sizeof(float));
    TF_Operation* constant_op = TF_Const(graph, "constant", tensor, status);
    TF_CHECK_OK(status);

    // 创建一个加法操作(Add)将输入和常量相加
    TF_Output add_inputs[2] = { input_op, TF_OperationOutput(constant_op, 0) };
    TF_Operation* add_op = TF_FinishOperation(TF_NewOperation(graph, "Add", "addition"), status);
    TF_CHECK_OK(status);
    TF_AddInput(add_op, add_inputs[0]);
    TF_AddInput(add_op, add_inputs[1]);

    // 初始化变量
    TF_SessionRun(session, NULL, NULL, NULL, 0, NULL, NULL, 0, NULL, status);
    TF_CHECK_OK(status);

    // 运行计算图

    // 为输入数据分配内存并设置输入值
    const int64_t input_dims[] = { 1 };
    TF_Tensor* input_tensor = TF_AllocateTensor(TF_FLOAT, input_dims, 1, sizeof(float));
    float* input_data = (float*)TF_TensorData(input_tensor);
    *input_data = 2.0;

    // 指定输入和输出节点
    const int input_node_count = 1;
    const TF_Output* input_nodes = &input_op;
    const TF_Tensor* const* input_tensors = &input_tensor;

    const int output_node_count = 1;
    TF_Output output_nodes[1] = { add_inputs[1] };
    TF_Tensor* output_tensors[1] = { NULL };

    // 执行会话,将输入数据传递给计算图,获取输出结果
    TF_SessionRun(session, NULL, input_nodes, input_tensors, input_node_count, output_nodes, output_tensors, output_node_count, NULL, 0, NULL, status);
    TF_CHECK_OK(status);

    // 获取结果并打印
    TF_Tensor* output_tensor = output_tensors[0];
    float* output_data = (float*)TF_TensorData(output_tensor);
    printf("Result: %f\n", *output_data);

    // 释放资源
    TF_DeleteTensor(input_tensor);
    TF_DeleteStatus(status);
    TF_CloseSession(session, status);
    TF_DeleteSession(session, status);
    TF_DeleteSessionOptions(session_options);
    TF_DeleteGraph(graph);

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IRUIRUI__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值