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

Keras/Tensorflow中简单神经网络的误差

姜建德
2023-03-14

我正在建立一个简单的神经网络。数据是一个231长的向量,它是一个热编码的向量。每个231个长向量被分配一个8个长的热编码标签。

到目前为止,我的代码是:

ssdf = pd.read_csv("/some/path/to/1AMX_one_hot.csv", sep=',')

ss = ssdf.iloc[:,3:11] # slice the df for the ss
labels = ss.values # vector of all ss's
labels = labels.astype('int32')
# data
onehot = ssdf.iloc[:,11:260]
data = onehot.values
data = data.astype('int32')

model = tf.keras.Sequential()
# Adds a densely-connected layer with 64 units to the model:
model.add(layers.Dense(64, activation='relu'))

# Add another:
model.add(layers.Dense(64, activation='relu'))

# Add a softmax layer with 8 output units:
model.add(layers.Dense(8, activation='softmax'))


model.compile(Adam(lr=.0001), 
          loss='sparse_categorical_crossentropy', 
          metrics=['accuracy']
)

## fit the model
model.fit(data, labels, epochs=10, batch_size=32)

问题是输出层是8个单位,但是我的标签不是单个单位,它们是一个热编码的8个长矢量。如何将此表示为输出?

错误消息是:

无法用非浮点dtype构建密集层

完全回溯:

Traceback (most recent call last):
  File "/some/path/to/file/main.py", line 36, in <module>
    model.fit(data, labels, epochs=10, batch_size=32)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/keras/engine/training.py", line 806, in fit
    shuffle=shuffle)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/keras/engine/training.py", line 2503, in     _standardize_user_data
    self._set_inputs(cast_inputs)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/training/tracking/base.py", line 456, in     _method_wrapper
    result = method(self, *args, **kwargs)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/keras/engine/training.py", line 2773, in     _set_inputs
    outputs = self.call(inputs, training=training)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/keras/engine/sequential.py", line 256, in call
outputs = layer(inputs, **kwargs)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/keras/engine/base_layer.py", line 594, in     __call__
    self._maybe_build(inputs)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/keras/engine/base_layer.py", line 1713, in     _maybe_build
    self.build(input_shapes)
  File "/anaconda3/lib/python3.7/site-    packages/tensorflow/python/keras/layers/core.py", line 963, in build
    'dtype %s' % (dtype,))

共有1个答案

柴丰
2023-03-14

示例代码中有几个问题:

  1. 您的网络需要输入层或输入形状。
  2. 将数据和标签输入为:astype(np.float32)

如果你的标签是形状(150,8),然后用8个神经元来拟合最后一层。

model.add(layers.Dense(8, activation='softmax'))
model.compile(Adam(lr=0.0001),
              loss='categorical_crossentropy',
              metrics=['accuracy'])

更新:

ssdf = pd.read_csv("/some/path/to/1AMX_one_hot.csv", sep=',')

ss = ssdf.iloc[:,3:11] # slice the df for the ss
labels = ss.values # vector of all ss's
labels = labels.astype('float32')                     # changed this
# data
onehot = ssdf.iloc[:,11:260]
data = onehot.values
data = data.astype('float32')                         # changed this

model = tf.keras.Sequential()
# Adds a densely-connected layer with 64 units to the model:
model.add(layers.Dense(64, activation='relu'))

# Add another:
model.add(layers.Dense(64, activation='relu'))

# Add a softmax layer with 8 output units:
model.add(layers.Dense(8, activation='softmax'))


model.compile(Adam(lr=.0001), 
          loss='categorical_crossentropy',            # changed this
          metrics=['accuracy']
)

## fit the model
model.fit(data, labels, epochs=10, batch_size=32)
 类似资料:
  • 本文向大家介绍TensorFlow实现简单卷积神经网络,包括了TensorFlow实现简单卷积神经网络的使用技巧和注意事项,需要的朋友参考一下 本文使用的数据集是MNIST,主要使用两个卷积层加一个全连接层构建的卷积神经网络。 先载入MNIST数据集(手写数字识别集),并创建默认的Interactive Session(在没有指定回话对象的情况下运行变量) 在定义一个初始化函数,因为卷积神经网络有

  • 本文向大家介绍tensorflow建立一个简单的神经网络的方法,包括了tensorflow建立一个简单的神经网络的方法的使用技巧和注意事项,需要的朋友参考一下 本笔记目的是通过tensorflow实现一个两层的神经网络。目的是实现一个二次函数的拟合。 如何添加一层网络 代码如下: 注意该函数中是xW+b,而不是Wx+b。所以要注意乘法的顺序。x应该定义为[类别数量, 数据数量], W定义为[数据类

  • 主要内容:使用TensorFlow实现递归神经网络递归神经网络是一种面向深度学习的算法,遵循顺序方法。在神经网络中,我们总是假设每个输入和输出都独立于所有其他层。这些类型的神经网络称为循环,因为它们以顺序方式执行数学计算。 考虑以下步骤来训练递归神经网络 - 第1步 - 从数据集输入特定示例。 第2步 - 网络将举例并使用随机初始化变量计算一些计算。 第3步 - 然后计算预测结果。 第4步 - 生成的实际结果与期望值的比较将产生错误。 第5步 -

  • 在了解了机器学习概念之后,现在可以将注意力转移到深度学习概念上。深度学习是机器学习的一个分支。深度学习实现的示例包括图像识别和语音识别等应用。 以下是两种重要的深度神经网络 - 卷积神经网络 递归神经网络 在本章中,我们将重点介绍CNN - 卷积神经网络。 卷积神经网络 卷积神经网络旨在通过多层阵列处理数据。这种类型的神经网络用于图像识别或面部识别等应用。CNN与其他普通神经网络之间的主要区别在于

  • 本文向大家介绍tensorflow入门之训练简单的神经网络方法,包括了tensorflow入门之训练简单的神经网络方法的使用技巧和注意事项,需要的朋友参考一下 这几天开始学tensorflow,先来做一下学习记录 一.神经网络解决问题步骤: 1.提取问题中实体的特征向量作为神经网络的输入。也就是说要对数据集进行特征工程,然后知道每个样本的特征维度,以此来定义输入神经元的个数。 2.定义神经网络的结

  • 我试图用TensorFlow建立一个简单的神经网络。目标是在32像素x 32像素的图像中找到矩形的中心。矩形由五个向量描述。第一个向量是位置向量,其他四个是方向向量,组成矩形边。一个向量有两个值(x和y)。 该图像的相应输入为(2,5)(0,4)(6,0)(0,-4)(-6,0)。中心(以及所需输出)位于(5,7)。 我想出的代码如下所示: 遗憾的是,网络无法正常学习。结果太离谱了。例如,[[3.