【问题标题】:How to properly build a tensor array dataset from a series of single values - tensorflow newbie如何从一系列单值中正确构建张量数组数据集 - tensorflow新手
【发布时间】:2019-01-28 13:01:28
【问题描述】:

我是 tensorflow 和数据集 API 的新手。看起来我没有向张量流提供正确的字典列表。我得到以下输出:

tensorflow.python.framework.errors_impl.InvalidArgumentError: In[0] is not a matrix. Instead it has shape [] [Op:MatMul]

我的代码是:

train_dataset = tf.data.experimental.CsvDataset( 
  "train.csv",
  [tf.float32,
   tf.int32] )

model = tf.keras.Sequential([
   tf.keras.layers.Dense(10, activation=tf.nn.relu, input_shape=(1,)),  #     input shape required
   tf.keras.layers.Dense(10, activation=tf.nn.relu),
   tf.keras.layers.Dense(1)
])

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
model.compile( optimizer,
           loss='categorical_crossentropy',
           metrics=['accuracy'] )

model.fit( train_dataset.make_one_shot_iterator(), 
       steps_per_epoch = 1,
       verbose = 2 )

希望模型顶部开始训练.....

【问题讨论】:

  • 你的数据集是什么形状的?
  • CSV 文件仅包含一项功能 (float32)。标签为 0 或 1。有 100 个训练示例。
  • 这是一个打印输出:train_dataset is features is: tf.Tensor(0.39382437, shape=( ), dtype=float32) 标签为:tf.Tensor(0, shape=(), dtype=int32)
  • 所以,当您打印 dataframe.shape 时,您会得到类似:(100, ) 的信息吗?
  • 你的意思是tf.shape(train_dataset) by dataframe.shape

标签: python tensorflow tensorflow-datasets


【解决方案1】:

我的意见很少:

1)据我了解,问题在于您填写的数据的格式。 在 cmets 中,您说您的 CSV 文件具有 (100, 2) 形状。 但是,您已经指定了 10 个节点的输入层。因此,您的神经网络期望接收 10 个变量作为输入,但您只提供 2 个(因为您只有 2 列)。这肯定会返回错误。下一个问题是,用如此小的输入实现一个新神经网络是非常困难的(并不是说不可能)。如果你想学习,我建议你从另一个数据集开始。互联网上有很多很酷的数据集,专门用于学习机器学习的基础。

2) 如果你使用的是 keras,那么你不需要普通的 TensorFlow 函数(例如tf.train.GradientDescentOptimizer)。您可以仅使用 Keras 函数(具有不同的语法)来训练模型。您可以使用model.compile 对许多指令进行分组。我建议你看看Keras Guide to Sequential models

3) 我强烈建议您使用pandas 库导入数据。你可以这样做:

import pandas as pd
dataframe = pd.read_csv("path/to/dataframe.csv")

然后将其转换为矩阵:

dataframe = dataframe.values

这会将它变成一个 numpy 数组,它几乎适用于任何深度学习库。

【讨论】:

  • 谢谢!欣赏它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2017-10-18
  • 2021-06-04
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2016-03-25
相关资源
最近更新 更多