首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SkFlow TensorFlowDNNRegressor的多个目标列

使用SkFlow TensorFlowDNNRegressor的多个目标列
EN

Stack Overflow用户
提问于 2016-08-28 22:04:50
回答 1查看 716关注 0票数 2

我刚开始使用Tensorflow/SkFlow,我正在尝试弄清楚是否可以使用多个目标列并生成多个输出预测。

我尝试了下面的代码,但这似乎不是可接受的输入:

代码语言:javascript
复制
import numpy as np
import tensorflow.contrib.learn as skflow

# Sample data (obviously actual data would contain a lot more rows)
training_data = np.asarray( [
    np.asarray( [ 215.0, 5.0], dtype=np.float64 ),
    np.asarray( [ 283.0, 2.0], dtype=np.float64 )
], dtype=np.float64 )
training_target  = np.asarray( [
    np.asarray( [ 220.0, 210.0], dtype=np.float64 ),
    np.asarray( [ 285.0, 281.0], dtype=np.float64 )
], dtype=np.float64 )

regressor = skflow.TensorFlowDNNRegressor( hidden_units=[2,4,2] )
regressor.fit( x=training_data, y=training_target, steps=2000 )

print( regressor.predict( training_set.data )[0] )

当我运行这段代码时,我得到以下错误:

代码语言:javascript
复制
File "/some/path/anaconda/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/tensor_shape.py", line 741, in assert_is_compatible_with
raise ValueError("Shapes %s and %s are incompatible" % (self, other))
ValueError: Shapes (?, 1) and (?, 2) are incompatible

有没有可能用SkFlow做这样的事情呢?

EN

回答 1

Stack Overflow用户

发布于 2016-09-17 10:06:06

有一段代码使用了DNNRegressor:

代码语言:javascript
复制
import numpy as np
from sklearn.cross_validation import train_test_split
from tensorflow.contrib import learn
import tensorflow as tf
import logging
#logging.getLogger().setLevel(logging.INFO)

#Some fake data

N=200
X=np.array(range(N),dtype=np.float32)/(N/10)
X=X[:,np.newaxis]

Y=np.sin(X.squeeze())+np.random.normal(0, 0.5, N)

X_train, X_test, Y_train, Y_test = train_test_split(X, Y,
                                                    train_size=0.8,
                                                    test_size=0.2)


reg=learn.DNNRegressor(hidden_units=[10,10])
reg.fit(X_train,Y_train,steps=500)

当我测试时,如果Y_train的形状是N*1,这个代码可以工作,否则,它将失败。我不知道如何解决这个问题。

但是,我使用tflearn模块编写了一个多目标回归演示,可能会对您有所帮助。

代码语言:javascript
复制
import tflearn
import tflearn.datasets.mnist as mnist

X,Y,testX,testY = mnist.load_data(one_hot=True)

input_layer = tflearn.input_data(shape=[None, 784],name='input')
dense1 = tflearn.fully_connected(input_layer,128,name='dense1')
dense2 = tflearn.fully_connected(dense1,256,name='dense2')
final  = tflearn.fully_connected(dense2,10,activation='relu')
regression = tflearn.regression(final,optimizer='adam',
                                learning_rate=0.001,
                                loss='mean_square')

model = tflearn.DNN(regression,checkpoint_path='model.tf.ckpt')

model.fit(X,Y,n_epoch=1,
          validation_set=(testX,testY),
          show_metric=True,
          snapshot_epoch=True,
          snapshot_step=500,
          run_id='tflearnDemo')

pred = model.predict(testX)

for i in range(len(testX)):
    print('the original data: ', testY[i], \
          'the predict  data: ', pred[i])
    print("[*]============================")

ZhQ

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39192107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档