Quark723 2019-03-06 09:58
浏览 495

训练神经网络拟合正弦函数在jupter notebook上运行无反应

import warnings
warnings.filterwarnings('ignore')
import math
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import types
import pylab

def  draw_correct_line():
    x = np.arange(0, 2 * np.pi, 0.01)
    x = x.reshape((len(x), 1))
    y = np.sin(x)

    pylab.plot(x, y, label = '标准sin曲线')
    plt.axhline(linewidth = 1, color = 'r')

def get_train_data():
    train_x = np.random.uniform(0.0, 2 * np.pi, (1))
    train_y = np.sin(train_x)
    return train_x, train_y

def inference(intput_data):
    with tf.variable_scope('hidden1'):
        weights = tf.get_variable("weight", [1,16], tf.float32, initializer=tf.random_normal_initializer(0.0, 1))
        biases = tf.get_variable("bias", [1,16], tf.float32, initializer=tf.random_normal_initializer(0,0, 1))
        hidden1 = tf.sigmoid(tf.multiply(input_data, weights) + biases)

    with tf.variable_scope('hidden2'):
        weights = tf.get_variable("weight", [16,16], tf.float32, initializer=tf.random_normal_initializer(0.0, 1))
        biases = tf.get_variable("bias", [16], tf.float32, initializer=tf.random_normal_initializer(0.0, 1))
        mul = tf.matmul(hidden1, weights)
        hidden2 = tf.sigmoid(mul + biases)

    with tf.variable_scope('hidden3'):
        weights = tf.get_variable("weight", [16,16], tf.float32, initializer=tf.random_normal_initializer(0.0, 1))
        biases = tf.get_variable("bias", [16], tf.float32, initializer=tf.random_normal_initializer(0.0, 1))
        hidden3 = tf.sigmoid(tf.matmul(hidden2, weights) + biases)

    with tf.variable_scope('output_layer'):
        weights = tf.get_variable("weight", [16,1], tf.float32, initializer=tf.random_normal_initializer(0.0, 1))
        biases = tf.get_variable("bias", [1], tf.float32, initializer=tf.random_normal_initializer(0.0, 1))
        output = tf.matmul(hidden3, weight) + biases
    return output    

def train():
    learning_rate = 0.01
    x = tf.placeholder(tf.float32)
    y = tf.placeholder(tf.float32)

    net_out = inference(x)

    loss_op = tf.square(net_out - y)

    opt = tf.train.GradientDescentOptimizer(learning_rate)
    train_op = opt.minimize(loss_op)
    init = tf.global_variables_initializer()

    with tf.Session() as sess:
        sess.run(init)
        print("start training....")
        for i in range(1000000):
            train_x, train_y = get_train_data()
            sess.run(train_op, feed_dict={x:train_x, y:train_y})

            if i%10000 == 0:
                times = int(i/10000)
                test_x_ndarray = np.arange(0, 2 * np.pi, 0.01)
                test_y_ndarray = np.zeros([len(test_x_ndarray)])
                ind = 0

            for test_x in test_x_ndarray:
                test_y = sess.run(net_out, feed_dict={x:test_x, y:1})
                np.put(test_y_ndarray, ind, test_y)
                ind += 1
            draw_correct_line()
            pylab.plot(test_x_ndarray, test_y_ndarray, '--', label = str(times) + 'times')
            pylab.show()
    if _name_ == "_main_":
         train()
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 用visual studi code完成html页面
    • ¥15 聚类分析或者python进行数据分析
    • ¥15 逻辑谓词和消解原理的运用
    • ¥15 三菱伺服电机按启动按钮有使能但不动作
    • ¥15 js,页面2返回页面1时定位进入的设备
    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?