Python 3.x 为什么Keras会告诉我;ValueError:使用序列设置数组元素。";尽管所有数组都是numpy数组?
我正在尝试使用keras训练2D神经网络。当我尝试在keras中使用model.fit函数时,我收到了一条奇怪的错误消息,“ValueError:使用序列设置数组元素”。具体地说,错误表明我的“张量列标签”是序列而不是数组。但我的标签确实是numpy数组(不是序列)。我不知道凯拉斯为什么抱怨这件事 我正在学习构建网络的教程Python 3.x 为什么Keras会告诉我;ValueError:使用序列设置数组元素。";尽管所有数组都是numpy数组?,python-3.x,tensorflow,keras,Python 3.x,Tensorflow,Keras,我正在尝试使用keras训练2D神经网络。当我尝试在keras中使用model.fit函数时,我收到了一条奇怪的错误消息,“ValueError:使用序列设置数组元素”。具体地说,错误表明我的“张量列标签”是序列而不是数组。但我的标签确实是numpy数组(不是序列)。我不知道凯拉斯为什么抱怨这件事 我正在学习构建网络的教程 tensor_train_data.shape #TensorShape([Dimension(209), Dimension(64), Dimension(64), Dim
tensor_train_data.shape
#TensorShape([Dimension(209), Dimension(64), Dimension(64), Dimension(3)])
tensor_test_data.shape
#TensorShape([Dimension(50), Dimension(64), Dimension(64), Dimension(3)])
tensor_train_labels = tf.reshape(tensor_train_labels, [209,1])
tensor_test_labels = tf.reshape(tensor_test_labels, [50,1])
batch_size = 10
epochs = 8
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(32, kernel_size=(3,3), activation='relu',
input_shape=(64, 64, 3)))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2)))
model.add(tf.keras.layers.Dropout(0.25))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation = 'relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(2, activation = 'softmax'))
model.compile(loss='categorical_crossentropy', optimizer =
tf.keras.optimizers.Adam(lr=0.0001, decay=1e-6), metrics=['accuracy'])
model.fit(tensor_train_data/255.0,
tf.keras.utils.to_categorical(tensor_train_labels),
batch_size = batch_size,
shuffle = True,
epochs = epochs,
validation_data = (tensor_test_data/ 255.0,
tf.keras.utils.to_categorical(tensor_test_labels)))
scores = model.evaluate(tensor_test_labels/ 255.0,
tf.keras.utils.to_categorical(tensor_test_labels))
print('Loss: %.3f' % scores[0])
print('Accuracy: %.3f' % scores[1])
错误:
ValueError Traceback (most recent call last)
<ipython-input-224-80431a1b3e79> in <module>
1 model.compile(loss='categorical_crossentropy', optimizer = tf.keras.optimizers.Adam(lr=0.0001, decay=1e-6), metrics=['accuracy'])
----> 2 model.fit(tensor_train_data/255.0, tf.keras.utils.to_categorical(tensor_train_labels),
3 batch_size = batch_size,
4 shuffle = True,
5 epochs = epochs,
~\AppData\Local\conda\conda\envs\deeplearning\lib\site-packages\tensorflow\python\keras\utils\np_utils.py in to_categorical(y,
num_classes)
37 last.
38 """
---> 39 y = np.array(y, dtype='int')
40 input_shape = y.shape
41 if input_shape and input_shape[-1] == 1 and len(input_shape) > 1:
ValueError: setting an array element with a sequence.
ValueError回溯(最近一次调用)
在里面
1.model.compile(loss='classifical_crossentropy',optimizer=tf.keras.optimizers.Adam(lr=0.0001,detacy=1e-6),metrics=['accurity']))
---->2模型拟合(张量序列数据/255.0,tf.keras.utils.to分类(张量序列标签),
3批次尺寸=批次尺寸,
4 shuffle=True,
5个时代=时代,
~\AppData\Local\conda\conda\envs\deeplearning\lib\site packages\tensorflow\python\keras\utils\np_utils.py in to_category(y,
数量(每班)
最后一次。
38 """
--->39 y=np.array(y,dtype='int')
40输入_形=y形
41如果输入_形和输入_形[-1]==1且len(输入_形)>1:
ValueError:使用序列设置数组元素。
可能的错误是,当您尝试将其转换为numpy数组时,您有不同大小的数组。可能的解决方案:可能的错误是,当您尝试将其转换为numpy数组时,您有不同大小的数组。可能的解决方案: