tensorflow 的基本结构、代码例子

TensorFlow通过数据流图进行计算,定义神经网络结构后,将数据放入计算。节点表示数学操作,边表示张量数据流,训练时张量在图中流动,体现其数据流特性。
摘要由CSDN通过智能技术生成

tensorflow 的处理结构

Tensorflow 首先要定义神经网络的结构, 然后再把数据放入结构当中去运算和 training.

在这里插入图片描述
因为TensorFlow是采用数据流图(data flow graphs)来计算, 所以首先我们得创建一个数据流流图, 然后再将我们的数据(数据以张量(tensor)的形式存在)放在数据流图中计算. 节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor). 训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是TensorFlow名字的由来.

import tensorflow as tf 
import numpy as np

#create data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 +0.3  #定义了我们想要的权重0.1和偏重0.3,下面使结构学习达到这两个值

### create tensorflow structure start ###
Weights = tf.Variable(tf.random_uniform([1],-0.1,0.1))
biases = tf.Variable(tf.zeros([1]))  #定义初始权重和偏重

y = Weights *x_data + biases #预测的y,通过Weights *x_data + biases来提升y准确度
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

init = tf.initialize_all_variables()
### create tensorflow structure end ###

sess = tf.Session()
sess.run(init)  #整个神经网络就被激活了,非常重要,指针指到init

for step in range (200):
    sess.run(train)
    if step%20 ==0:
        print(step,sess.run(Weights),sess.run(biases))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图神经网络(GNN)在TensorFlow中通常用于处理和分析图结构数据,如社交网络、化学分子等。下面是一个简单的例子,展示如何使用TensorFlow的Eager Execution模式和Graph Neural Network Library (TF-GNN)构建一个基本的GNN模型: ```python # 首先安装必要的库 !pip install tensorflow-gnn import tensorflow as tf from tensorflow_gnn import graph_constants, modules, layers # 假设我们有一个邻接矩阵和特征数据 adjacency = ... # 一个邻接矩阵,表示图的结构 node_features = ... # 一个二维数组,每个节点的特征向量 # 将数据转换为适合TF-GNN的格式 adjacency_tensor = tf.SparseTensor(adjacency['indices'], adjacency['values'], adjacency['dense_shape']) node_sets = {'nodes': tf.RaggedTensor.from_row_lengths(node_features)} # 定义GNN模型 class GNNModule(modules.GraphModule): def __init__(self, output_size): super(GNNModule, self).__init__() self.conv1 = layers.InteractionNetworkBlock( edge_model=layers.MessagePassingLayer(num_hidden=64), node_model=layers.MLP(output_size=output_size) ) self.conv2 = layers.GraphNetworkBlock( edge_model=layers.MessagePassingLayer(num_hidden=64), node_model=layers.MLP(output_size=output_size) ) def forward(self, inputs): node_features = inputs['nodes'] updated_node_features = self.conv1([node_features, adjacency_tensor]) updated_node_features = self.conv2([updated_node_features, adjacency_tensor]) return {'nodes': updated_node_features} # 创建并配置模型 model = GNNModule(output_size=32) optimizer = tf.keras.optimizers.Adam(learning_rate=0.01) # 假设我们有一个训练步骤 def train_step(inputs): with tf.GradientTape() as tape: predictions = model(inputs) loss = ... # 根据具体任务计算损失,例如交叉熵 gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) return loss # 执行训练循环 num_epochs = 10 for epoch in range(num_epochs): losses = [] for batch_data in ...: # 你的数据迭代器 losses.append(train_step(batch_data)) print(f"Epoch {epoch+1}: Loss: {tf.reduce_mean(losses)}")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值