当预期浮点值介于 0 和 1 之间时,TensorFlow MLP 始终返回 0 或 1

兰德尼亚·维丹·贾亚瓦德内

我是 TensorFlow 的初学者。我实现了一个 tensorFlow MLP 网络来预测 0 和 - 1 之间的值。输入值是介于 0 和 1 之间的浮点值,权重是介于 0 和 1 之间的随机浮点数。但输出总是返回 0 或 1,我希望返回介于 0 和 - 1 之间的浮点值0 和 1。代码如下。

import tensorflow as tf
import numpy as np
from sklearn import datasets`enter code here`
from sklearn.model_selection import train_test_split
from scipy.io import loadmat
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler

RANDOM_SEED = 42
tf.set_random_seed(RANDOM_SEED)


def init_weights(shape):
    """ Weight initialization """
    weights = tf.random_normal(shape, stddev=0.01)
    return tf.Variable(weights)

def forwardprop(X, w_1, w_2):
    h    = tf.nn.sigmoid(tf.matmul(X, w_1))  # The \sigma function
    yhat = tf.matmul(h, w_2)  # The \varphi function
    return yhat

def load_data():
        dw = loadmat('dw.mat')
        dv = loadmat('dv.mat')
        dw_2 = loadmat('test_dw.mat')
        dv_2 = loadmat('test_dv.mat')

        train_dw = dw['dw']
        train_dv = dv['dv']
        test_dw = dw_2['test_dw']
        test_dv = dv_2['test_dv']

        scaler = MinMaxScaler()
        train_dw = scaler.fit_transform(train_dw)
        train_dv = scaler.fit_transform(train_dv)
        test_dw = scaler.fit_transform(test_dw)
        test_dv = scaler.fit_transform(test_dv)

        rows = len(train_dw)
        # train_input = dv(t),dw(t),dw(-1),dw(t-2),dw_pred_neighbor1(t),dw_pred_neighbor2(t)
        train_input = np.column_stack((np.ones((rows-3)),train_dv[2:(rows-1),1],train_dw[2:(rows-1),1],train_dw[1:(rows-2),1],train_dw[0:(rows-3),1],train_dw[2:(rows-1),2],train_dw[2:(rows-1),4]))
        # train target = dw(t+1)
        train_target = np.column_stack((np.ones((rows-3)),train_dw[3:rows,1]))

        test_rows = len(test_dw)
        # test_input = dv(t),dw(t),dw(-1),dw(t-2),dw_pred_neighbor1(t),dw_pred_neighbor2(t)
        test_input = np.column_stack((np.ones((test_rows-3)),test_dv[2:(test_rows-1),1],test_dw[2:(test_rows-1),1],test_dw[1:(test_rows-2),1],test_dw[0:(test_rows-3),1],test_dw[2:(test_rows-1),2],test_dw[2:(test_rows-1),4]))
        # test target = dw(t+1)
        test_target =  np.column_stack((np.ones((test_rows-3)),test_dw[3:test_rows,1]))

        return train_input, test_input, train_target, test_target

def main():
    train_X, test_X, train_y, test_y = load_data()

    # Layer's sizes
    x_size = train_X.shape[1]   # Number of input nodes
    h_size = 10                 # Number of hidden nodes
    y_size = train_y.shape[1]           # Number of outputs

    # Symbols
    X = tf.placeholder(dtype = tf.float32, shape=[None, x_size])
    y = tf.placeholder(dtype = tf.float32, shape=[None, y_size])

    # Weight initializations
    w_1 = init_weights((x_size, h_size))
    w_2 = init_weights((h_size, y_size))

    # Forward propagation
    yhat    = forwardprop(X, w_1, w_2)
    predict = tf.argmax(yhat, axis=1)

    # Backward propagation
    #cost    = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=yhat))
    cost = tf.losses.mean_squared_error(y,yhat)
    updates = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)

    # Run SGD
    sess = tf.Session()
    init = tf.global_variables_initializer()
    sess.run(init)

    cost_history = np.empty(shape=[1],dtype=float)

    for epoch in range(1000):
        #Train with each example
        for i in range(len(train_X)):
            sess.run(updates, feed_dict={X: train_X, y: train_y})


        pred = sess.run(predict,feed_dict={X: train_X})
        print(pred)
        plt.plot(range(len(pred)),pred)
        plt.show()
        cost_history = np.append(cost_history, sess.run(cost, feed_dict={X: train_X, y: train_y}))
        train_accuracy = np.mean(np.argmax(train_y, axis=0) ==
                                 sess.run(predict, feed_dict={X: train_X, y: train_y}))

        test_accuracy  = np.mean(np.argmax(test_y, axis=0) ==
                                 sess.run(predict, feed_dict={X: test_X, y: test_y}))

        print("Epoch = %d, train accuracy = %.2f%%, test accuracy = %.2f%%"
              % (epoch + 1, 100. * train_accuracy, 100. * test_accuracy))

    plt.plot(range(len(cost_history)),cost_history)
    plt.axis([0,epoch,0,np.max(cost_history)])
    plt.show()
    sess.close()

if __name__ == '__main__':
    main()
班里克

tf.argmax 返回向量中具有最大值的索引。

如果你想找到确切的类概率,你可以使用 tf.max

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的MLP神经网络的输出在0和1之间?

来自分类Dev

返回1,返回0,返回-1和退出之间的区别?

来自分类Dev

如何在JavaScript中将任何数字范围缩放到介于0和1之间的值

来自分类Dev

Javascript随机数介于0和1之间

来自分类Dev

查找NA介于0和1之间的行

来自分类Dev

Javascript随机数介于0和1之间

来自分类Dev

为什么为 dx[dir 选择值 {1, 1, 0, -1, -1, -1, 0, 1} 和 {0, 1, 1, 1, 0, -1, -1, -1} ] 和 dy[dir]?

来自分类Dev

标准浮点数的0和1之间有多少个唯一值?

来自分类Dev

如果不是0和1,则返回false

来自分类Dev

如果不是0和1,则返回false

来自分类Dev

当值小于 1 时浮点数返回 0

来自分类Dev

断言错误:设备索引超出范围(0个可用设备;设备索引应介于0和-1之间(包括0和-1)

来自分类Dev

-1和〜0之间有区别吗?

来自分类Dev

'(unsigned)1'和'(unsigned)〜0'之间的差异

来自分类Dev

当 Z 轴介于 0 和 1 之间时,如何向 R 中的 Surface3d 添加渐变颜色

来自分类Dev

[$的含义?== 1] &&返回0

来自分类Dev

Matlab激活函数的值0和1

来自分类Dev

将3d坐标向量归一化为介于0和1之间

来自分类Dev

如何获得介于0和1之间的S形函数以得到正确答案的概率?

来自分类Dev

如何将随机整数转换为介于0和1之间的float

来自分类Dev

将3d坐标向量归一化为介于0和1之间

来自分类Dev

确保百分比介于 0 和 1 之间,包括(使用单个函数)

来自分类Dev

在输入 CNN 之前,将图像标准化为浮点 0~1、浮点 -1~1 和整数 0~255 之间有什么区别?

来自分类Dev

MySQL:返回“ 0”和“ 1”,而不是“ false”和“ true”

来自分类Dev

提取包含0 | 0,0 | 1,1 | 0和1 | 1的文件

来自分类Dev

返回0 1而不是数据值

来自分类Dev

浮点值默认为1或0

来自分类Dev

将 0 和 1 之间的 a 标准化为给定的最小值和最大值

来自分类Dev

Java矩阵0和1

Related 相关文章

  1. 1

    为什么我的MLP神经网络的输出在0和1之间?

  2. 2

    返回1,返回0,返回-1和退出之间的区别?

  3. 3

    如何在JavaScript中将任何数字范围缩放到介于0和1之间的值

  4. 4

    Javascript随机数介于0和1之间

  5. 5

    查找NA介于0和1之间的行

  6. 6

    Javascript随机数介于0和1之间

  7. 7

    为什么为 dx[dir 选择值 {1, 1, 0, -1, -1, -1, 0, 1} 和 {0, 1, 1, 1, 0, -1, -1, -1} ] 和 dy[dir]?

  8. 8

    标准浮点数的0和1之间有多少个唯一值?

  9. 9

    如果不是0和1,则返回false

  10. 10

    如果不是0和1,则返回false

  11. 11

    当值小于 1 时浮点数返回 0

  12. 12

    断言错误:设备索引超出范围(0个可用设备;设备索引应介于0和-1之间(包括0和-1)

  13. 13

    -1和〜0之间有区别吗?

  14. 14

    '(unsigned)1'和'(unsigned)〜0'之间的差异

  15. 15

    当 Z 轴介于 0 和 1 之间时,如何向 R 中的 Surface3d 添加渐变颜色

  16. 16

    [$的含义?== 1] &&返回0

  17. 17

    Matlab激活函数的值0和1

  18. 18

    将3d坐标向量归一化为介于0和1之间

  19. 19

    如何获得介于0和1之间的S形函数以得到正确答案的概率?

  20. 20

    如何将随机整数转换为介于0和1之间的float

  21. 21

    将3d坐标向量归一化为介于0和1之间

  22. 22

    确保百分比介于 0 和 1 之间,包括(使用单个函数)

  23. 23

    在输入 CNN 之前,将图像标准化为浮点 0~1、浮点 -1~1 和整数 0~255 之间有什么区别?

  24. 24

    MySQL:返回“ 0”和“ 1”,而不是“ false”和“ true”

  25. 25

    提取包含0 | 0,0 | 1,1 | 0和1 | 1的文件

  26. 26

    返回0 1而不是数据值

  27. 27

    浮点值默认为1或0

  28. 28

    将 0 和 1 之间的 a 标准化为给定的最小值和最大值

  29. 29

    Java矩阵0和1

热门标签

归档