SinX函数曲线的拟合/逼近.
说明:原代码来自罗冬日-tensorfow实战书籍代码,且该代码选自google官方案例.
- 网络层次结构:W 为16维,depth为3,也就说说合计参数48个.
- 采用随机梯度优化,但是原书中提示实际运用中Adam(亚当)优化效果更好:收敛速度更快.
- 代码在原代码有少部分修改.
- 运行结果如下:起始/5w次后的结果.
- 代码.
# coding=utf-8 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import pylab ''' 用TensorFlow来拟合一个正弦函数. 代码选自:罗冬日-tensorflow实战. 罗冬日代码改写自google官方案例. ''' #分配第一块显卡,若是在tensorflow-gpu下默认使用的显卡,可以不添加改行. # with tf.device("/gpu:0"): # 改行用于每次运行都重置变量,否则同名变量无法运行. tf.reset_default_graph() #定义显存分配百分比,貌似不准确,有点误差.. config = tf.ConfigProto() # %matplotlib qt # config.gpu_options.per_process_gpu_memory_fraction = 0.6 # 分配60%显存. config.gpu_options.allow_growth = True # 自动分配. with tf.Session(config = config) as sess: def draw_correct_line(): ''' 绘制标准的sin曲线 ''' x = np.arange(0, 2 * np.pi, 0.01) x = x.reshape((len(x), 1)) y = np.sin(x) pylab.plot(x, y, label='standard sin:') plt.axhline(linewidth=1, color='r') def get_train_data(): ''' 返回一个训练样本(train_x, train_y), 其中train_x是随机的自变量, train_y是train_x的sin函数值 '''