Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


6 questions online user: 28

0
votes
answers
12 views
+10

用於使用Tensorflow/tflearn預測財務數據的圖層

0

我想預測利率,並且我有一些相關因素,例如股票指數和貨幣供應量等。因子數可能高達200.用於使用Tensorflow/tflearn預測財務數據的圖層

例如,訓練數據如X包含因子,y是我想要訓練和預測的利率。

 factor1  factor2  factor3   factor176 factor177 factor178 
X= [[ 2.1428  6.1557  5.4101  ..., 5.86  6.0735  6.191 ] 
    [ 2.168  6.1533  5.2315  ..., 5.8185  6.0591  6.189 ] 
    [ 2.125  4.7965  3.9443  ..., 5.7845  5.9873  6.1283]...] 

y= [[ 3.5593] 
    [ 3.014 ] 
    [ 2.7125]...] 

所以我想用tensorflow/tflearn訓練這個模型,但我真的不知道到底我應該選擇做迴歸什麼方法。我曾經從tflearn嘗試過LinearRegression,但結果並不是那麼好。

現在,我只是使用我在網上找到的代碼。

net = tflearn.input_data([None, 178]) 
net = tflearn.fully_connected(net, 64, activation='linear', 
           weight_decay=0.0005) 
net = tflearn.fully_connected(net, 1, activation='linear') 
net = tflearn.regression(net, optimizer= 
tflearn.optimizers.AdaGrad(learning_rate=0.01, initial_accumulator_value=0.01), 
loss='mean_square', learning_rate=0.05) 
model = tflearn.DNN(net, tensorboard_verbose=0, checkpoint_path='tmp/') 
model.fit(X, y, show_metric=True, 
      batch_size=1, n_epoch=100) 

當誤差範圍爲±10%時,結果大致爲50%的準確度。 我試圖讓窗口達到7天,但結果仍然不好。所以我想知道我可以使用哪些額外的層來使這個網絡更好。

沙发
0
0

首先,這個網絡沒有任何意義。如果你的隱藏單元沒有任何激活,你的網絡是相當於線性迴歸

所以首先改變

net = tflearn.fully_connected(net, 64, activation='linear', 
           weight_decay=0.0005) 

net = tflearn.fully_connected(net, 64, activation='relu', 
           weight_decay=0.0005) 

另一個普遍的事情是總是正常化您的數據。你的X很大,Y也很大 - 確保它們不是,例如通過增白(讓它們爲0和1)。

找到正確的架構是一個難題,你不會找到任何「神奇的接受」。從理解你在做什麼開始。記錄你的訓練,看看訓練損失是否收斂到較小的值,如果不是這樣 - 你的訓練時間不夠長,網絡太小,或者訓練超參數是關閉的(比如太大的學習權限,太高的正則化等等)

+0

我當前的版本:[code&dataset](https://www.floydhub.com/asdasdad/projects/a/4/code)我試過relu,但測試數據的結果看起來很奇怪。輸出:[輸出](https://www.floydhub.com/viewer/data/TXCRxgLTngd788FeLA4YQU/) – user6456568

+0

正如答案中所說 - 線性激活是一個**錯誤**,但使事情工作需要真正理解數據和模型;線性的東西是唯一的實際「錯誤」,其他所有事情都是一步一步分析的問題,並查看事情出錯的地方 - 再次 - 看着**培訓**是至關重要的,而不是測試在這一點上 – lejlot

+0

我的意思是如果我將所有'線性'變爲'relu',那麼y的輸出大部分仍然是相同的,我真的很困惑,因爲我使用相同的數據使用線性預測股票指數的準確性是相當不錯的,我不明白爲什麼利率如此不同。 – user6456568

0
votes
answers
25 views
+10

形狀必須是1級,但是是2級tflearn錯誤

1

我正在使用由tflearn提供的DNN從一些數據中學習。我data變量的(6605, 32)的形狀和我labels數據具有(6605,),我在下面的代碼(6605, 1)重塑形狀......形狀必須是1級,但是是2級tflearn錯誤

# Target label used for training 
labels = np.array(data[label], dtype=np.float32) 

# Reshape target label from (6605,) to (6605, 1) 
labels = tf.reshape(labels, shape=[-1, 1]) 

# Data for training minus the target label. 
data = np.array(data.drop(label, axis=1), dtype=np.float32) 

# DNN 
net = tflearn.input_data(shape=[None, 32]) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 1, activation='softmax') 
net = tflearn.regression(net) 

# Define model. 
model = tflearn.DNN(net) 
model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True) 

這給了我一對夫婦的錯誤,首先是...

tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape must be rank 1 but is rank 2 for 'strided_slice' (op: 'StridedSlice') with input shapes: [6605,1], [1,16], [1,16], [1].

...第二個是...

During handling of the above exception, another exception occurred:

ValueError: Shape must be rank 1 but is rank 2 for 'strided_slice' (op: 'StridedSlice') with input shapes: [6605,1], [1,16], [1,16], [1].

我不知道什麼rank 1rank 2是,所以我不知道如何解決這個問題。

+0

嘗試刪除「標籤」的整形;錯誤是否持續?它是提供一個你的數據樣本(也可以是任何提供此模型的鏈接,如你所說,將是有用的) – desertnaut

沙发
0
2

在Tensorflow中,秩是張量的維數(與矩陣秩不相似)。作爲一個例子,下面的張量具有2

t1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
print(t1.shape) # prints (3, 3) 

此外秩,以下張量具有3.

t2 = np.array([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]) 
print(t2.shape) # prints (2, 2, 3) 

由於tflearn是建立在Tensorflow的頂部,輸入不應該秩是張量。我已經修改了你的代碼,並在必要時進行了評論。

# Target label used for training 
labels = np.array(data[label], dtype=np.float32) 

# Reshape target label from (6605,) to (6605, 1) 
labels =np.reshape(labels,(-1,1)) #makesure the labels has the shape of (?,1) 

# Data for training minus the target label. 
data = np.array(data.drop(label, axis=1), dtype=np.float32) 
data = np.reshape(data,(-1,32)) #makesure the data has the shape of (?,32) 

# DNN 
net = tflearn.input_data(shape=[None, 32]) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 1, activation='softmax') 
net = tflearn.regression(net) 

# Define model. 
model = tflearn.DNN(net) 
model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True) 

希望這會有所幫助。

0
votes
answers
18 views
+10

Tflearn model.predict無法提供形狀的值(1,1,17)

1

我對Tensorflow和tflearn很新穎 到目前爲止,我已經研究了幾個教程,並一直試圖將tflearn泰坦尼克號應用於動物園動物數據集(http://archive.ics.uci.edu/ml/datasets/Zoo)。培訓工作很好,但是當我嘗試對我輸入的數據嘗試使用model.predict時,出現以下錯誤Tflearn model.predict無法提供形狀的值(1,1,17)

無法提供張量'InputData/X:0'的形狀值(1,1,17) ,它具有形狀 '(?16)'

這裏的Python代碼

from __future__ import print_function 

import numpy as np 
import tflearn 

# Load CSV file, indicate that the first column represents labels 
from tflearn.data_utils import load_csv 
data, labels = load_csv('zoo.csv', target_column=-1, 
         categorical_labels=True, n_classes=8) 


# Preprocessing function 
def preprocess(data, columns_to_ignore): 
    # Sort by descending id and delete columns 
    for id in sorted(columns_to_ignore, reverse=True): 
     [r.pop(id) for r in data] 
    return np.array(data, dtype=np.float32) 

# Ignore 'name' and 'ticket' columns (id 1 & 6 of data array) 
to_ignore=[0] 

# Preprocess data 
data = preprocess(data, to_ignore) 

# Build neural network 
net = tflearn.input_data(shape=[None,16]) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 8, activation='softmax') 
net = tflearn.regression(net) 


# Define model 
model = tflearn.DNN(net) 
# Start training (apply gradient descent algorithm) 
model.fit(data, labels, n_epoch=1, validation_set=0.1, shuffle=True, batch_size=17, show_metric=True) 

ant = ['ant', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 8, 0, 0, 0] 
# Preprocess data 
ant = preprocess([ant], to_ignore) 
# Predict surviving chances (class 1 results) 
pred = model.predict([ant]) 
print("Ant is:", pred[0]) 

我使用重塑試過了,沒有相當的工作。我發現使用搜索的類似問題在訓練階段出現此錯誤,而不是預測。

+0

請分享一下''data'&'''vars以及'zoo.csv'的樣本(沒有樣本數據,任何人都可以幫忙......) – desertnaut

沙发
0
0

原來我在數據集的列數上看起來不夠細心...... 如果其他人遇到類似問題或使用此示例來練習機器學習,那麼這裏是工作代碼。

from __future__ import print_function 

import numpy as np 
import tflearn 

# Load CSV file, indicate that the first column represents labels 
from tflearn.data_utils import load_csv 
data, labels = load_csv('zoo.csv', target_column=-1, 
         categorical_labels=True, n_classes=8) 


# Preprocessing function 
def preprocess(data, columns_to_ignore): 
    # Sort by descending id and delete columns 
    for id in sorted(columns_to_ignore, reverse=True): 
     [r.pop(id) for r in data] 
    return np.array(data, dtype=np.float32) 

# Ignore 'name' and 'ticket' columns (id 1 & 6 of data array) 
to_ignore=[0] 

# Preprocess data 
data = preprocess(data, to_ignore) 

# Build neural network 
net = tflearn.input_data(shape=[None,16]) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 8, activation='softmax') 
net = tflearn.regression(net) 


# Define model 
model = tflearn.DNN(net) 
# Start training (apply gradient descent algorithm) 
model.fit(data, labels, n_epoch=30, validation_set=0.1, shuffle=True, batch_size=20, show_metric=True) 

ant = [0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 8, 0, 0, 0] 
# Preprocess data 
# ant = preprocess([ant], to_ignore) 
# ant = np.reshape(ant, (1,16)) 
# Predict surviving chances (class 1 results) 
pred = model.predict_label([ant]) 
print("Ant is:", pred[0]) 
0
votes
answers
13 views
+10

如何確定我的深度學習模型需要什麼類型的圖層?

2

假設我想製作一個可以做某事的模型。現在當我在Google或YouTube上搜索這個主題時,我發現很多相關的教程,看起來像一個聰明的程序員已經通過深度學習實現了這個模型。如何確定我的深度學習模型需要什麼類型的圖層?

但是他們怎麼知道什麼類型的層,他們需要什麼類型的激活功能,喪失功能,優化,單位等數使用深度學習解決某些問題。

是否有知道這一點,或者它只是理解和經驗的問題的任何技術?如果有人能指點我一些視頻或文章回答我的問題,這也會非常有幫助。

+1

問題上不屬於SO嘗試新的模型和算法。它與編程本身無關。您可以在https://stats.stackexchange.com/上提出此問題,而不是在這裏 – DJK

+0

這是一個積極研究的領域。谷歌有一些努力使架構可以學習。一般來說,我建議從已知的良好配置開始,例如VGG net,直到您瞭解每個組件以及它們如何應用。通過閱讀深度學習書籍(在線和印刷版),您將更多地瞭解架構選擇。這個問題沒有銀彈答案。至少不是在2017年。 –

沙发
0
4

這是更多的理解和經驗的問題。從頭開始構建模型時,您必須瞭解哪個優化器,損失等對於您的特定問題有意義。爲了適當選擇這些,你必須瞭解可用優化器,丟失函數等之間的差異。

關於選擇多少層和節點,批量大小,學習速率等 - 這些是所有超參數,您將需要在您試驗模型時進行測試和調整。

我有一個Deep Learning Fundamentals YouTube playlist,你可能會發現有用的。它涵蓋了短視頻中每個主題的基本基礎知識。另外,如果你想在獲得基本概念之後更多地關注編碼,這個Deep Learning with Keras playlist也可能是有益的。

+0

您的播放列表非常有幫助。繼續像這樣工作。上帝祝福你。 –

+0

謝謝,Snehanshu!僅供參考,我剛更新了播放列表的鏈接。我的內容已移至新頻道。 – blackHoleDetector

板凳
0
2

謝謝你的問題。

  1. 在CNN的CS231n斯坦福大學的演講是最適合初學者參考視頻講座here和課堂筆記都可以here
  2. 觀看講座和完成任務後,你會得到一個基本思路什麼深層學習是和所有可用等
  3. 算法但是,當涉及到解決現實世界的問題,這將是不夠的所以他任教更多關於如何使用Kaggle平臺來看待問題由傑里米·霍華德採取this course
  4. 繼續解決更多的問題,使用幾個平臺,如hackerearth,Kaggle,TopCoder公司等
0
votes
answers
17 views
+10

整形input_data(形狀= [無,28個,28,1])至input_data(形狀= [無,28個,28])

0

我有一個變量:整形input_data(形狀= [無,28個,28,1])至input_data(形狀= [無,28個,28])

network = input_data(shape=[None, 28, 28, 1]) 

我想將其轉換爲以上形狀。我正在做tflearn.reshape的幫助,但它不能正常工作。下面是代碼「

network = tflearn.reshape(network,(-1, 28, 28)) 

我不想重新聲明它塑造[無,28,28]因爲我在它的元素。如何做到這一點任何幫助嗎?

沙发
0
0

使用tf.squeeze它從一個張量的形狀消除尺寸1的尺寸。

network = tf.squeeze(network) 
板凳
0
0

問題是出在你把形狀。它應該是[-1,28,28]格式。

所以您的代碼將成爲:

network = tflearn.reshape(network,[-1, 28, 28]) 

問候

0
votes
answers
12 views
+10

ValueError:無法提供形狀的值TensorFlow

0

我遇到TFLearn/TensorFlow的一些問題。我已經調整了我的np.reshape到合適的尺寸,但我與錯誤而崩潰:ValueError:無法提供形狀的值TensorFlow

這個錯誤發生在訓練代碼行17:

ValueError: Cannot feed value of shape (48, 1) for Tensor 'TargetsData/Y:0', which has shape '(?, 2)' 

線路供參考:

model.fit(X, Y, n_epoch=250, validation_set=(W,Z), show_metric=True) 

我的訓練代碼如下:

import deepneuralnet as net 
import numpy as np 
from tflearn.data_utils import image_preloader 
import os 

model = net.model 
train_path = os.path.abspath('train') 
print(train_path) 
X, Y = image_preloader(target_path=train_path, image_shape=(100, 100), 
mode='folder', grayscale=False, categorical_labels=True, normalize=True) 
X = np.reshape(X, (-1, 100, 100, 3)) 

validate_path = os.path.abspath('validate') 
W, Z = image_preloader(target_path=validate_path, image_shape=(100, 100), 
mode='folder', grayscale=False, categorical_labels=True, normalize=True) 
W = np.reshape(W, (-1, 100, 100, 3)) 
model.fit(X, Y, n_epoch=250, validation_set=(W,Z), show_metric=True) 
model.save('./ZtrainedNet/final-model.tfl') 

而神經網爲:

import tflearn 
from tflearn.layers.core import input_data, dropout, fully_connected 
from tflearn.layers.conv import conv_2d, max_pool_2d 
from tflearn.layers.estimator import regression 
from tflearn.metrics import Accuracy 

acc = Accuracy() 
network = input_data(shape=[None, 100, 100, 3]) 
# Conv layers ------------------------------------ 
network = conv_2d(network, 64, 3, strides=1, activation='relu') 
network = max_pool_2d(network, 2, strides=2) 
network = conv_2d(network, 64, 3, strides=1, activation='relu') 
network = max_pool_2d(network, 2, strides=2) 
network = conv_2d(network, 64, 3, strides=1, activation='relu') 
network = conv_2d(network, 64, 3, strides=1, activation='relu') 
network = conv_2d(network, 64, 3, strides=1, activation='relu') 
network = max_pool_2d(network, 2, strides=2) 
# Fully Connected Layers ------------------------- 
network = fully_connected(network, 1024, activation='tanh') 
network = dropout(network, 0.5) 
network = fully_connected(network, 1024, activation='tanh') 
network = dropout(network, 0.5) 
network = fully_connected(network, 2, activation='softmax') 
network = regression(network, optimizer='momentum', 
loss='categorical_crossentropy', 
learning_rate=0.001, metric=acc) 
model = tflearn.DNN(network) 

我的理解是它與softmax有關嗎?我不確定。

+0

所以你有一個數據集有2個類,大小爲48?你可以在這裏發佈一個Y值的樣本嗎? –

+0

錯誤說'Y'沒有預期的形狀。 –

沙发
0
0

原來,子文件夾被搞砸了。 2與我有的子文件夾的數量相對應,我認爲我設置正確,但在「火車」內部只有1個子文件夾。

板凳
0
0

你的Y值是否也是一個熱點編碼?我只是想猜測爲什麼Y的形狀(?,2)。 如果你可以在你的訓練集中共享一些樣本標籤,那會很好。