paddlepaddle中的数据读入方式1--直接输入数据

这篇博客介绍了如何在PaddlePaddle中直接输入数据到一个简单的全连接层神经网络。首先,加载必要的软件包,然后创建训练数据。接着,配置神经网络的输入接口以匹配数据格式,并设计一个输出全连接层。初始化参数后,开始训练过程。由于没有反向传播网络,多次训练结果保持不变。文章提供了完整的程序和运行结果。

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

直接输入数据举例

为了突出数据输入方式,以一个线性的全连接层为例,没有设计标签输入和反向网络 。

加载必要的软件包

import paddle.fluid as fluid
import numpy

产生训练数据–给网络准备食物

神经网络挑食,要求数据是Tensor,最简单的食物就是Numpy的Array数组。
详见:https://www.paddlepaddle.org.cn/documentation/docs/zh/user_guides/howto/basic_concept/tensor.html#tensor
神经网络不仅挑食材,还挑口味, 主要是float32。详见:https://www.paddlepaddle.org.cn/documentation/docs/zh/user_guides/howto/prepare_data/feeding_data.html#fluid

train_data=numpy.array([[1.0],[2.0],[3.0],[4.0]]).astype('float32') # 食物的shape=(4,1),type='float32'
print(train_data.shape) 

配置输入接口–设计网络的嘴巴

嘴巴的大小和形状要和喂入的食物吻合
shape中的None表示可以是任意正整数。
None可以用-1代替,作用相同;
本例中None也可以用4代替,这样和训练的食物相同,但是以后用模型预测时,食物的shape就只能是(4,1)

x = fluid.data(name="x",shape=[None,1],dtype='float32') # 嘴巴的shape容纳了食物的shape。

配置网络–设计一个输出的全连接层

对应一个x输入,网络就会产生一个预测值,预测值y_predict=ax,
此处的权重a由初始化产生,由于本网络省去了反向网络,没有学习能力,a只与初始化程序有关。
本例中的a采用了Xavier初始化方式。详见:全连接层fc参数设置ParamAttr

y_predict = fluid.layers.fc(input=x,size=1,act=None)

初始化参数

cpu = fluid.core.CPUPlace() # 在cpu上操作
exe = fluid.Executor(cpu)
exe.run(fluid.default_startup_program()) # 运行执行器初始化网络参数(采用默认的初始化程序)

开始训练–喂食

训练的过程就是运行主程序的过程。
由于没有反向网络,多次训练结果没有变化。

for i in range(3): 
    outs = exe.run( # 加载主程序运行执行器
        feed={'x':train_data}, # 从名为x的嘴巴喂入train_data食物
        fetch_list=[y_predict])
    # 每次训练的结果
    print(outs) # 输出列表仅有一个内容,就是out[0]=y_predict
# 训练到最后一次的结果
#print(outs) # 输出列表仅有一个内容,就是out[0]=y_predict

完整的程序

import paddle.fluid as fluid
import numpy

train_data=numpy.array([[1.0],[2.0],[3.0],[4.0]]).astype('float32') # 食物的shape=(4,1),type='float32'

x = fluid.data(name="x",shape=[None,1],dtype='float32') # 嘴巴的shape容纳了食物的shape。

y_predict = fluid.layers.fc(input=x,size=1,act=None)

cpu = fluid.core.CPUPlace() # 在cpu上操作
exe = fluid.Executor(cpu)
exe.run(fluid.default_startup_program()) # 运行执行器初始化网络参数(采用默认的初始化程序)

for i in range(3): 
    outs = exe.run( # 加载主程序运行执行器
        feed={'x':train_data}, # 从名为x的嘴巴喂入train_data食物
        fetch_list=[y_predict])
    # 每次训练的结果
    print(outs) # 输出列表仅有一个内容,就是out[0]=y_predict

运行结果

3次训练结果没有变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值