#python #numpy #tensorflow #deep-learning #transfer-learning
#python #numpy #тензорный поток #глубокое обучение #передача-обучение
Вопрос:
Я практикуюсь в обучении передаче с помощью набора данных Iris.
Для следующего кода я получаю следующее сообщение об ошибке:
Не удалось преобразовать массив NumPy в тензор (неподдерживаемый тип объекта с плавающей точкой)
Мне нужна помощь в решении этой ошибки.
Ниже импортированные библиотеки
import pandas as pd
import io
import requests
import numpy as np
from sklearn import metrics
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation
from tensorflow.keras.callbacks import EarlyStopping
прочитайте файл csv с помощью pandas
df = pd.read_csv("Iris.csv", na_values=['NA', '?'])
df.columns
#output of df.colums
Index(['Id', 'SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm',
'Species'],
dtype='object')
преобразовать в массив numpy для классификации
x = df[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'Species']].values
dummies = pd.get_dummies(df['Species']) #classification
species = dummies.columns
y = dummies.values
Создайте нейронную сеть,
model = Sequential()
model.add(Dense(50, input_dim = x.shape[1], activation= 'relu')) #Hidden Layer-->1
model.add(Dense(25, activation= 'relu')) #Hidden Layer-->2
model.add(Dense(y.shape[1], activation= 'softmax')) #Output
Скомпилируйте модель NN
model.compile(loss ='categorical_crossentropy', optimizer ='adam')
Установите модель и, пожалуйста, обратите внимание на эту часть
model_fit=model.fit(x,y, verbose=2, epochs=10, steps_per_epoch=3)
Ошибка приведена ниже,
ValueError Traceback (most recent call last)
<ipython-input-48-0ff464178023> in <module>()
----> 1 model_fit=model.fit(x,verbose=2, epochs=10, steps_per_epoch=3)
13 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in convert_to_eager_tensor(value, ctx, dtype)
96 dtype = dtypes.as_dtype(dtype).as_datatype_enum
97 ctx.ensure_initialized()
---> 98 return ops.EagerTensor(value, ctx.device_name, dtype)
99
100
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float).
Ответ №1:
Вы можете попробовать следующее:
X = np.asarray(x).astype(np.float32)
model_fit=model.fit(X,y, verbose=2, epochs=10, steps_per_epoch=3)
Похоже, что один из столбцов не поддерживается. Поэтому просто преобразуйте его в массив numpy с типом данных float .
Обратите внимание, что вы x
неправильно определяете, которые содержат класс. Это должно быть:
x = df[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']].values
Комментарии:
1. @ImdadulHaque вы тоже заметили заметку? что касается построения
x