TypeError:float()参数必须是字符串或数字,而不是运行keras模型的fit()函数时的'builtin_function_or_method'

问题描述 投票:0回答:1

我正在关注这个有关使用长期短期记忆单元(lstm)建立股市预测模型的python教程:https://towardsdatascience.com/getting-rich-quick-with-machine-learning-and-stock-market-predictions-696802da94fe

这是我的主要代码:

from sklearn import preprocessing
from keras.models import Model
from keras import optimizers
from Get_Data import Get_Data
from model import lstm_cell
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

days_in_history = 50

# MSFT = Microsoft stock prices
Get_Data.save_dataset('MSFT')

print('[INFO] preparing data...')
ohlcv_histories, next_day_open_values, unscaled_y, y_normaliser = Get_Data.csv_to_dataset('MSFT', days_in_history)

test_split = 0.9 # the percent of data to be used for testing
n = int(ohlcv_histories.shape[0] * test_split)

# splitting the dataset up into train and test sets
x_train = ohlcv_histories[:n]
y_train = next_day_open_values[:n]

x_test = ohlcv_histories[n:]
y_test = next_day_open_values[n:]

unscaled_y_test = unscaled_y[n:]

print('[INFO] compiling model...')
model = lstm_cell.build(days_in_history,5)
adam = optimizers.Adam(lr = 0.0005)
model.compile(optimizer=adam, loss='mse')

print('[INFO] training model...')
epochs = 50
batch_size = 32
print(type(x_train))
print(type(y_train))

# use fit instead of fit_generator instead bc we don't use data augmentation
H = model.fit(x=x_train, y=y_train, batch_size=batch_size, epochs=epochs, shuffle=True, validation_split=0.1)

这是我的模型(model.py):

import keras
import tensorflow as tf
from keras.models import Model
from keras.layers import Dense, Dropout, LSTM, Input, Activation, concatenate
from keras import optimizers
import numpy as np


class lstm_cell: 

    def build(height, width):   

        np.random.seed(4)

        lstm_input = Input(shape=(height, width), name='lstm_input')
        x = LSTM(50, name='lstm_0')(lstm_input)
        x = Dropout(0.2, name='lstm_dropout_0')(x)
        x = Dense(64, name='dense_0')(x)
        x = Activation('sigmoid', name='sigmoid_0')(x)
        x = Dense(1, name='dense_1')(x)
        output = Activation('linear', name='linear_output')(x)
        model = Model(inputs=lstm_input, outputs=output)

        adam = optimizers.Adam(lr=0.0005)

        model.compile(optimizer=adam, loss='mse')

        return model

当我使用model.fit()函数到达代码的最后一行时,我从终端收到此错误消息:

Traceback (most recent call last):
  File "testing.py", line 42, in <module>
    model.fit(x=ohlcv_train, y=y_train, batch_size=32, epochs=50, shuffle=True, validation_split=0.1)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/keras/engine/training.py", line 1239, in fit
    validation_freq=validation_freq)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/keras/engine/training_arrays.py", line 196, in fit_loop
    outs = fit_function(ins_batch)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py", line 3721, in __call__
    value = ops.convert_to_tensor(value, dtype=tensor.dtype)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 1314, in convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/tensor_conversion_registry.py", line 52, in _default_conversion_function
    return constant_op.constant(value, dtype, name=name)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/constant_op.py", line 258, in constant
    allow_broadcast=True)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/constant_op.py", line 266, in _constant_impl
    t = convert_to_eager_tensor(value, ctx, dtype)
  File "/Users/Mac/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/constant_op.py", line 96, in convert_to_eager_tensor
    return ops.EagerTensor(value, ctx.device_name, dtype)
TypeError: float() argument must be a string or a number, not 'builtin_function_or_method'

我在不同的上下文中看到了其他人遇到相同的错误(这里是链接:TypeError: float() argument must be a string or a number, not 'builtin_function_or_method')。他/她在函数末尾缺少一对括号,但我似乎在代码中找不到相同的错误。我错过了什么吗,还是其他原因引起的错误?

如果有人有任何建议,请告诉我!谢谢!

python keras typeerror lstm data-fitting
1个回答
0
投票

我是否可以知道功能列表中是否有任何日期类型字段,请在培训中排除该列

参考:Pandas : TypeError: float() argument must be a string or a number

© www.soinside.com 2019 - 2024. All rights reserved.