|
|
|
@ -24,33 +24,30 @@ BATCH_SIZE = 20
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestNetWithDtype(unittest.TestCase):
|
|
|
|
|
def set_network(self):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
self.dtype = "float64"
|
|
|
|
|
self.init_dtype()
|
|
|
|
|
main = fluid.Program()
|
|
|
|
|
with fluid.program_guard(main):
|
|
|
|
|
self.x = fluid.layers.data(name='x', shape=[13], dtype=self.dtype)
|
|
|
|
|
self.y = fluid.layers.data(name='y', shape=[1], dtype=self.dtype)
|
|
|
|
|
y_predict = fluid.layers.fc(input=self.x, size=1, act=None)
|
|
|
|
|
|
|
|
|
|
cost = fluid.layers.square_error_cost(input=y_predict, label=self.y)
|
|
|
|
|
def run_net_on_place(self, place):
|
|
|
|
|
main = fluid.Program()
|
|
|
|
|
startup = fluid.Program()
|
|
|
|
|
with fluid.program_guard(main, startup):
|
|
|
|
|
x = fluid.layers.data(name='x', shape=[13], dtype=self.dtype)
|
|
|
|
|
y = fluid.layers.data(name='y', shape=[1], dtype=self.dtype)
|
|
|
|
|
y_predict = fluid.layers.fc(input=x, size=1, act=None)
|
|
|
|
|
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
|
|
|
|
|
avg_cost = fluid.layers.mean(cost)
|
|
|
|
|
self.program = main
|
|
|
|
|
self.fetch_list = [avg_cost]
|
|
|
|
|
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
|
|
|
|
|
sgd_optimizer.minimize(avg_cost)
|
|
|
|
|
|
|
|
|
|
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
|
|
|
|
|
sgd_optimizer.minimize(avg_cost)
|
|
|
|
|
|
|
|
|
|
def run_net_on_place(self, place):
|
|
|
|
|
fetch_list = [avg_cost]
|
|
|
|
|
train_reader = paddle.batch(
|
|
|
|
|
paddle.dataset.uci_housing.train(), batch_size=BATCH_SIZE)
|
|
|
|
|
feeder = fluid.DataFeeder(place=place, feed_list=[self.x, self.y])
|
|
|
|
|
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
|
|
|
|
|
exe = fluid.Executor(place)
|
|
|
|
|
exe.run(fluid.default_startup_program())
|
|
|
|
|
exe.run(startup)
|
|
|
|
|
for data in train_reader():
|
|
|
|
|
exe.run(self.program,
|
|
|
|
|
feed=feeder.feed(data),
|
|
|
|
|
fetch_list=self.fetch_list)
|
|
|
|
|
exe.run(main, feed=feeder.feed(data), fetch_list=fetch_list)
|
|
|
|
|
# the main program is runable, the datatype is fully supported
|
|
|
|
|
break
|
|
|
|
|
|
|
|
|
@ -58,14 +55,12 @@ class TestNetWithDtype(unittest.TestCase):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def test_cpu(self):
|
|
|
|
|
self.set_network()
|
|
|
|
|
place = fluid.CPUPlace()
|
|
|
|
|
self.run_net_on_place(place)
|
|
|
|
|
|
|
|
|
|
def test_gpu(self):
|
|
|
|
|
if not core.is_compiled_with_cuda():
|
|
|
|
|
return
|
|
|
|
|
self.set_network()
|
|
|
|
|
place = fluid.CUDAPlace(0)
|
|
|
|
|
self.run_net_on_place(place)
|
|
|
|
|
|
|
|
|
|