hhw9307 2018-03-30 12:41 采纳率: 0%
浏览 1918
已结题

各位大神好,我在用tensorflow跑多任务学习的多层感知机遇到问题,训练得到y值都基本一样

-*- coding: utf-8 -*-

"""
Created on Fri Mar 30 18:09:10 2018

@author: 32641
"""
import tensorflow as tf
import xlrd
import numpy as np
data2=[]
data0=[]
data = xlrd.open_workbook('C:/Users/32641/Desktop/论文2/汇率上证.xls')
table = data.sheet_by_name('Sheet1')
nrows = table.nrows
for rownum in range(1, nrows): #也就是从Excel第二行开始,第一行表头不算
row = table.row_values(rownum)
#for i in range(1,ncols):heet
#row[i]=(row[i]-meansl[i-1])/stdl[i-1]
#row[i]=(row[i]-minsl[i-1])/(maxsl[i-1]-minsl[i-1])
#date = xlrd.xldate_as_tuple(row[0],0)
#date1=str(date[0])+'.'+str(date[1])+'.'+str(date[2])
#row[0]=date1
data0.append(row[1])
data2.append(row[2])

timeseries1=[]
timeseries2=[]
timeseriess=data0
for q in range(len(timeseriess)):
timeseries1.append((timeseriess[q]-min(timeseriess))/(max(timeseriess)-min(timeseriess)))
timeseries1=np.array(timeseries1)
for q in range(len(timeseriess)):
timeseries2.append((timeseriess[q]-min(timeseriess))/(max(timeseriess)-min(timeseriess)))
timeseries2=np.array(timeseries2)
lag=1
def cut(timeseries,lag):
x=np.zeros((1,lag))
y=np.zeros((1,1))
for i in range(len(timeseries)-lag):
x=np.vstack((x,timeseries[i:i+lag]))
y=np.vstack((y,timeseries[i+lag]))
return x[1:],y[1:]
x1,y1=cut(timeseries1,lag)
x2,y2=cut(timeseries2,lag)

split_boundary = int(x1.shape[0] * 0.8)

train_x1=x1[:split_boundary]
test_x1=x1[split_boundary:]
train_y1=x1[:split_boundary]
test_y1=x1[split_boundary:]

train_x2=x2[:split_boundary]
test_x2=x2[split_boundary:]
train_y2=x2[:split_boundary]
test_y2=x2[split_boundary:]

定义占位符

X = tf.placeholder("float",name="X")
Y1 = tf.placeholder("float", name="Y1")
Y2 = tf.placeholder("float", name="Y2")

定义权重

initial_shared_layer_weights = np.random.rand(1,2)
initial_Y1_layer_weights = np.random.rand(2,1)
initial_Y2_layer_weights = np.random.rand(2,1)

shared_layer_weights = tf.Variable(initial_shared_layer_weights, name="share_W", dtype="float32")
Y1_layer_weights = tf.Variable(initial_Y1_layer_weights, name="share_Y1", dtype="float32")
Y2_layer_weights = tf.Variable(initial_Y2_layer_weights, name="share_Y2", dtype="float32")

使用relu激活函数构建层

shared_layer = tf.nn.sigmoid(tf.matmul(X,shared_layer_weights))
Y1_layer = tf.nn.sigmoid(tf.matmul(shared_layer,Y1_layer_weights))
Y2_layer = tf.nn.sigmoid(tf.matmul(shared_layer,Y2_layer_weights))

计算loss

Y1_Loss = tf.nn.l2_loss(Y1-Y1_layer)
Y2_Loss = tf.nn.l2_loss(Y2-Y2_layer)

优化器

Y1_op = tf.train.AdamOptimizer().minimize(Y1_Loss)
Y2_op = tf.train.AdamOptimizer().minimize(Y2_Loss)

Calculation (Session) Code

==========================

open the session

with tf.Session() as session:
session.run(tf.initialize_all_variables())
for iters in range(3000):
if np.random.rand() < 0.5:
_, Y1_loss,Y1_Layer= session.run([Y1_op, Y1_Loss,Y1_layer],
{
X: train_x1,
Y1: train_y1,
Y2: train_y2
})
print(Y1_Layer)
print(Y1_loss)
else:
_, Y2_loss= session.run([Y2_op, Y2_Loss],
{
X: train_x2,
Y1: train_y1,
Y2: train_y2
})
print(Y2_loss)
session.close()

  • 写回答

1条回答

  • threenewbee 2018-03-30 15:35
    关注

    数据读取有没有问题,初始化参数是随机的么?

    评论

报告相同问题?

悬赏问题

  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败