繁体   English   中英

TypeError:调用层“lstm_6”时遇到异常(LSTM类型)

[英]TypeError: Exception encountered when calling layer "lstm_6" (type LSTM)

有人可以帮我弄这个吗? 我是机器学习的新手,我正在尝试进行时间序列机器学习,但是当我尝试使用model.fit()训练数据时,会发生这种情况

TypeError: Exception encountered when calling layer "lstm_6" (type LSTM)
Value passed to parameter 'a' has DataType string not in list of allowed values: bfloat16, float16, float32, float64, int32, int64, complex64, complex128

我在 Colab 中这样做,这是我的代码

import numpy as np
import pandas as pd
from keras.layers import Dense, LSTM
import matplotlib.pyplot as plt
import tensorflow as tf

data = pd.read_csv('/content/daily-minimum-temperatures-in-me.csv')
data.head(20)

data.isnull().sum()

dates = data['Date'].values
temp  = data['Daily minimum temperatures'].values

plt.figure(figsize=(15,5), dpi=100)
plt.plot(dates, temp)
plt.title('Temperature average',
          fontsize=16);

def windowed_dataset(series, window_size, batch_size, shuffle_buffer):
    series = tf.expand_dims(series, axis=-1)
    ds = tf.data.Dataset.from_tensor_slices(series)
    ds = ds.window(window_size + 1, shift=1, drop_remainder=True)
    ds = ds.flat_map(lambda w: w.batch(window_size + 1))
    ds = ds.shuffle(shuffle_buffer)
    ds = ds.map(lambda w: (w[:-1], w[-1:]))
    return ds.batch(batch_size).prefetch(1)

train_set = windowed_dataset(temp, window_size=60, batch_size=100, shuffle_buffer=1000)
model = tf.keras.models.Sequential([
  tf.keras.layers.LSTM(60, return_sequences=True),
  tf.keras.layers.LSTM(60),
  tf.keras.layers.Dense(30, activation="relu"),
  tf.keras.layers.Dense(10, activation="relu"),
  tf.keras.layers.Dense(1),
])

optimizer = tf.keras.optimizers.SGD(lr=1.0000e-04, momentum=0.9)
model.compile(loss=tf.keras.losses.Huber(),
              optimizer=optimizer,
              metrics=["mae"])
history = model.fit(train_set,epochs=100)

如果你需要知道数据集,这里是链接

我感谢任何人回答的帮助。 谢谢你。

每当您工作时,请尝试非常频繁地使用 print 语句。 就像 print(type(temp)) 给出了你的答案。

您正在以字符串格式读取所有数据,因此您的临时数据仍为字符串格式。 利用

data = pd.read_csv('/content/daily-minimum-temperatures-in-me.csv')
data = data._convert(numeric=True)
data.head(20)

这会将您代码中的所有数据转换为数字,希望它会起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM