当前位置: 首页 > 知识库问答 >
问题:

预测模型期望三维,但形状与阵列不匹配

越景天
2023-03-14

我用这个公式来预测Jupyter的股价:

import keys
import datetime
from binance.client import Client
import pandas as pd

client = Client(keys.APIKey, keys.SecretKey)

symbol= 'BTCUSDT'
BTC= client.get_historical_klines(symbol=symbol, interval=Client.KLINE_INTERVAL_30MINUTE, start_str="1 year ago UTC")

%matplotlib inline

BTC= pd.DataFrame(BTC, columns=['Open time', 'Open', 'High', 'Low', 
                                'Close', 'Volume', 'Close time', 
                                'Quote asset volume','Number of trades',
                                'Taker buy base asset volume', 
                                'Taker buy quote asset volume','Ignore'])

BTC['Open time'] = pd.to_datetime(BTC['Open time'], unit='ms')

BTC.set_index('Open time', inplace=True)
BTC

data= BTC.iloc[:,3:4].astype(float).values
from sklearn.preprocessing import MinMaxScaler

scaler= MinMaxScaler()
data=scaler.fit_transform(data)
training_set= data[:10000]
test_set=data[10000:]

X_train= training_set[0:len(training_set)-1]
y_train= training_set[1:len(training_set)]
X_test= test_set[0:len(test_set)-1]
y_test= test_set[1:len(test_set)]

import numpy as np
X_train = np.reshape(X_train, (len(X_train), 1, X_train.shape[1]))
x_test = np.reshape(X_test, (len(X_test), 1, X_test.shape[1]))

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM

model = Sequential()
model.add(LSTM(256, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(LSTM(256))
model.add(Dense(1))

model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, y_train, epochs=50, batch_size=16, shuffle=False)

predicted_price= model.predict(X_test)
predicted_price= scaler.inverse_transform(predicted_price)
real_price = scaler.inverse_transform(y_test)

但是,我没有得到真实与预测的图表,而是得到了以下错误:

中的ValueError回溯(最近一次调用)----

E:\anaconda3\lib\site-包\keras\引擎\training.py预测(自我,x,batch_size,冗长,步骤,回调,max_queue_size,工人,use_multiprocessing)1439 1440

案例2:符号张量或类似Numpy数组-

E:\anaconda3\lib\site packages\keras\engine\training。py输入用户数据(自身、x、y、样本重量、类别重量、检查数组长度、批次大小)577个输入形状,578个检查批次轴=False,不强制实施批次大小--

e:\anaconda3\lib\site-包\keras\引擎\training_utils.pystandardize_input_data(数据,名称,形状,check_batch_axis,exception_prefix)133':预期'名称[i]'具有'134 str(len(形状))'维度,但有数组'-

ValueError:检查输入时出错:预期lstm_1_input有3个维度,但得到了带有形状的数组(7505,1)

即使有了这个日志,我也无法找到修复它的根本原因。

共有1个答案

陆子默
2023-03-14

LSTM模型期望输入dim=3:(#样本、时间戳、特征)
例如,如果您有7505个音频文件,每个文件有100个时间戳,每个时间戳有578个特征-列车组应具有当前形状:(3100578)
您的输入形状是(#样本、特征),因此将其重塑为三维-对于X#train和X#train。

x_train = np.reshape(X_train, (len(X_train), 1, X_train.shape[1]))
x_test = np.reshape(X_test, (len(X_test), 1, X_test.shape[1]))

另外,请确保您使用重塑后的数据调用fitpredict

model.fit(x_train, y_train, epochs=50, batch_size=16, shuffle=False)
#.....
predicted_price= model.predict(x_test) #<--- Your problem was here! Make sure you use x_test and not X_test.
 类似资料:
  • 我想基于使用TfidfVectorizer的矢量化单词进行多标签分类(20个不同的输出标签)。我已经设置了39974行,每行包含2739个项目(0或1)。 我想使用Keras模型对这些数据进行分类,该模型将包含1个隐藏层(~ 20个节点,激活='relu'),输出层等于20个可能的输出值(激活='softmax'以选择最佳拟合)。 以下是我目前的代码: 但有错误: ValueError:检查输入时

  • 是否有一种内置的方法来使用proptypes来确保传递给组件的对象数组实际上是特定形状的对象数组? 也许是这样的? 我是不是漏了什么特别明显的东西?看来这会很受欢迎。

  • 它打印出值的等效,这是因为这一行: 通过调用表示。 那么,如何使Hibernate相信是的实例? 我的枚举是由加载的。而由URLClassLoader加载,由另一个类加载器加载。

  • 当我想跑的时候: 我得到: 执行操作“MappingAddAction”的服务异常,java.lang.IllegalArgumentException:参数值[5118]与预期的类型[com.vernuso.trust.server.domain.ClientImport.MappingInfo(N/A)]不匹配 有人能帮助我理解为什么它需要类型而不是类型吗? 我有两个表,如下图所示。Mappi

  • 我试图使用Talend将一个JSON文件从Azure ADLS gen2加载到snowflake,但我得到了以下错误: net.snowflake.client.loader.processQueue运行严重:state:INGEST_DATA,插入到“y_accxxxtail”(“xxx”,“xx”,“xxxxx”,我有36列,像这样)从“y_accxxxtail_20210226_132647

  • 我能够成功地设置parse(InputStream,DefaultHandler)方法签名的期望,但是当我试图模拟parse(InputSource,DefaultHandler)签名时,JMockit永远看不到调用,并抛出MissingInvocation异常。 下面的示例显示了两个测试用例,一个模拟InputSource风格,一个模拟InputStream风格: 运行testcase的结果是:

  • 试图实施更大规模的井字游戏 这个游戏可以有超过3行和3列 每当发现4个连续的模式(水平,垂直或交叉) 选手是赢家 我已经找到了水平和垂直匹配的实现方法 但是找不到一种方法来识别2d数组中某个字符的交叉模式 考虑下面的二维数组 ` ` 如何检查“*”字符在这个2d数组中是否有四个连续的交叉模式

  • 我做错了什么? 正在更新: 我发现了问题所在。问题与ActionRepository中找到的函数有关。函数的签名首先要求两个日期进行比较,然后id和我给出了相反的值。我很清楚,在我上了它之后,我会有一个问题的日期,所以答案确实帮助了我。谢谢大家!