百度架构师手把手教深度课程
2-2 【手写数字识别】之快速入门一节:
https://aistudio.baidu.com/aistudio/projectdetail/197622?pV=30470
用自建paddlepaddle 1.7 版本,本机jupyter发现无法通过
#加载飞桨和相关类库
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph.nn import FC
FC 无法加载
查找nn.py:
__all__ = [
'Conv2D', 'Conv3D', 'Pool2D', 'Linear', 'BatchNorm', 'Embedding', 'GRUUnit',
'LayerNorm', 'NCE', 'PRelu', 'BilinearTensorProduct', 'Conv2DTranspose',
'Conv3DTranspose', 'GroupNorm', 'SpectralNorm', 'TreeConv'
]
FC被哪个模块代替??
查文档:
该api已经被删除,请使用 Linear 接口,具体请参考 Linear 。
但是FC参数: class paddle.fluid.dygraph.FC(name_scope, size, num_flatten_dims=1, param_attr=None, bias_attr=None, act=None, is_test=False, dtype='float32')
与Linear参数:class paddle.fluid.dygraph.Linear(input_dim, output_dim, param_attr=None, bias_attr=None, act=None, dtype='float32')
不太一样。
求:
# 定义mnist数据识别网络结构,同房价预测网络
class MNIST(fluid.dygraph.Layer):
def __init__(self, name_scope):
super(MNIST, self).__init__(name_scope)
name_scope = self.full_name()
# 定义一层全连接层,输出维度是1,激活函数为None,即不使用激活函数
self.fc = FC(name_scope, size=1, act=None)
# 定义网络结构的前向计算过程
def forward(self, inputs):
outputs = self.fc(inputs)
return outputs
上面黑体字如果用Linear函数改写应该怎么写?Linear没有name_scope参数。
paddle1.7的name_scope已经移除了:https://www.paddlepaddle.org.cn/documentation/docs/zh/release_note_cn.html
直接
就可以了
同问,示例教程跑不通呀!
可以尝试下低版本的paddle
还是不行啊,提示input_dim找不到。
1.7没有FC
请用Linear替代
#加载飞桨和相关类库
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph import Linear
import numpy as np
import os
from PIL import Image
# 定义mnist数据识别网络结构,同房价预测网络
class MNIST(fluid.dygraph.Layer):
def __init__(self, name_scope):
super(MNIST, self).__init__(name_scope)
name_scope = self.full_name()
# 定义一层全连接层,输出维度是1,激活函数为None,即不使用激活函数
self.fc = Linear(input_dim=784, output_dim=1, act=None)
# 定义网络结构的前向计算过程
def forward(self, inputs):
outputs = self.fc(inputs)
return outputs
# 定义飞桨动态图工作环境
with fluid.dygraph.guard():
# 声明网络结构
model = MNIST("mnist")
# 启动训练模式
model.train()
# 定义数据读取函数,数据读取batch_size设置为16
train_loader = paddle.batch(paddle.dataset.mnist.train(), batch_size=16)
# 定义优化器,使用随机梯度下降SGD优化器,学习率设置为0.001
optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.001, parameter_list=model.parameters())
三个修改处丢这了
您好,想问一下parameter_list=model.parameters(),parameters()在MNIST类中我没看到定义,请问是怎么来的?
class MNIST(fluid.dygraph.Layer):
来自 Layer
我的也不行嘞,移除了?
新的API已经更新了,看看这个:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/dygraph_cn.html
1.7版本后的改动
1.所有的层都要设置上一层的输入维度imput_dim=上一层输出的通道数
2.不再使用name_scope
3.设置优化器时需要指定parameter_list=model.parameters(),model.parameters()是被优化的模型的参数。这样指定很适合GAN等多个模型同时训练的情况。