官方文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/fc_cn.html#fc
示例:
import paddle.fluid as fluid
import numpy as np
# 当输入为单个张量时
data = fluid.data(name="data", shape=[1, 2, 3], dtype="float32")
#data = fluid.layers.data(name="data", shape=[1, 2, 3], dtype="float32", append_batch_size=False)
print(data.shape)
out = fluid.layers.fc(input=data, size=4, num_flatten_dims=2)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
data_1 = np.array([[[0.1, 0.2, 0.25],
[0.3, 0.4, 0.5]]]).astype('float32')
print(data_1)
print(data_1.shape)
#data_1 = np.random.random(size=(1, 2, 3)).astype('float32')
#print(data_1)
#print(data_1.shape)
output = exe.run(feed={"data": data_1}, fetch_list = [out])
print(output)
官方文档 https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/data_cn.html#data 中不推荐使用 paddle.fluid.layers.data
,因其在之后的版本中会被删除。请使用 paddle.fluid.data
。
结果:
(1, 2, 3)
[[[0.1 0.2 0.25]
[0.3 0.4 0.5 ]]]
(1, 2, 3)
[array([[[-0.01665314, -0.06591143, 0.15567407, 0.0315908 ],
[-0.0708631 , -0.09518412, 0.3979489 , 0.10654163]]],
dtype=float32)]
示例2:
import paddle.fluid as fluid
import numpy as np
# 当输入为单个张量时
#data = fluid.data(name="data", shape=[-1, 4, 4], dtype="float32")
#fc = fluid.layers.fc(input=data, size=10, act="tanh", num_flatten_dims=1)
#fc = fluid.layers.fc(input=data, size=10, act="tanh", num_flatten_dims=2)
# 当输入为多个张量时
data_1 = fluid.data(name="data_1", shape=[-1, 4, 4], dtype="float32")
data_2 = fluid.data(name="data_2", shape=[-1, 4, 7], dtype="float32")
fc = fluid.layers.fc(input=[data_1, data_2], size=10, act="tanh", num_flatten_dims=2)
use_cuda = False
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
x = np.random.random(size=(2, 4, 4)).astype("float32")
y = np.random.random(size=(2, 4, 7)).astype("float32")
# num_flatten_dims=1时,x 与 y 的 batch_size 必须相等。
# num_flatten_dims=2时,x 与 y 的 batch_size 必须相等,且第2维参数也要相同。
output= exe.run(feed={"data_1":x, "data_2":y},
fetch_list=[fc.name])
print(output)
结果:
[array([[[ 0.43396744, -0.09869403, 0.78911686, -0.448565 ,
-0.9451803 , -0.35537675, -0.31206197, -0.9148217 ,
0.2201621 , -0.8341073 ],
[ 0.47531974, 0.2905832 , 0.546974 , -0.6266268 ,
-0.7724339 , 0.39588565, -0.10089907, -0.8260868 ,
0.25298518, -0.7880349 ],
[-0.1264834 , 0.02622051, 0.25237572, -0.20236889,
-0.8779443 , 0.04203564, -0.74966305, -0.75462556,
0.34439033, -0.8292232 ],
[-0.09280646, 0.08111441, 0.3787449 , -0.4057989 ,
-0.57154334, 0.1496581 , -0.595759 , -0.10123701,
0.17726052, -0.8555216 ]],
[[ 0.3234643 , -0.3491477 , -0.00235462, -0.00101849,
-0.9482162 , -0.04840872, -0.02319647, -0.67002887,
0.38058218, -0.5499319 ],
[-0.0376162 , -0.19537665, 0.42417863, -0.63395745,
-0.8352363 , 0.2921851 , -0.24062696, -0.4899596 ,
0.2469159 , -0.85880464],
[-0.2541329 , -0.6207021 , 0.3414195 , -0.25696227,
-0.75808513, -0.5182034 , -0.32643107, -0.58162224,
0.17629907, -0.21283819],
[ 0.5364003 , -0.03093212, 0.7685945 , -0.62906426,
-0.87721866, -0.23352787, -0.6901016 , -0.6667141 ,
0.16541354, -0.8501676 ]]], dtype=float32)]