我尝试对我的数据使用 tensorflow 联合学习工具。我有两个从 csv 文件中获得的数据集(dataset 和 dataset2),其中前 15 列是特征,最后一列是标签。我将我的 pandas 数据框转换为 tensorflow 数据集。但是,在迭代器中,有一个奇怪的类型错误。我是 tensrflow 的新手并发送代码:任何帮助将不胜感激。提前致谢。
from __future__ import absolute_import, division, print_function
from sklearn.preprocessing import MinMaxScaler
from keras.models import Model
import collections
import numpy as np
import tensorflow as tf
import tensorflow_federated as tff
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
import pandas as pd
X_train= pd.read_csv('./daily_frames_HR.csv')
values = X_train.values
values = values.astype('float32')
# normalize features
scaler = MinMaxScaler(feature_range=(0, 1))
scaled = scaler.fit_transform(values)
# frame as supervised learning
train = values[:, :]
# split into input and outputs
X, y = train[:, :-2], train[:, -1]
def create_compiled_keras_model():
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(
12, activation=tf.nn.softmax, kernel_initializer='zeros', input_dim=15)])
return model
def model_fn():
keras_model = create_compiled_keras_model()
keras_model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=
['SparseCategoricalAccuracy'])
X_train = pd.read_csv('./daily_frames_HR.csv')
values = X_train.values
values = values.astype('float32')
# normalize features
scaler = MinMaxScaler(feature_range=(0, 1))
scaled = scaler.fit_transform(values)
# frame as supervised learning
train = values[:, :]
# split into input and outputs
X, y = train[:, :-2], train[:, -1]
sample_batch = collections.OrderedDict([('x', X), ('y', y)])
return tff.learning.from_compiled_keras_model(keras_model, sample_batch)
iterative_process = tff.learning.build_federated_averaging_process(model_fn)
state = iterative_process.initialize()
X2_train= pd.read_csv('./lab_frames_HR.csv')
values2 = X2_train.values
values2 = values2.astype('float32')
# normalize features
scaler = MinMaxScaler(feature_range=(0, 1))
scaled = scaler.fit_transform(values2)
# frame as supervised learning
train2 = values2[:, :]
# split into input and outputs
X2, y2 = train2[:, :-2], train2[:, -1]
X2=pd.DataFrame(X2)
y2=pd.DataFrame(y2)
X=pd.DataFrame(X)
y=pd.DataFrame(y)
dataset = tf.data.Dataset.from_tensor_slices((X2.values, y2.values))
dataset2= tf.data.Dataset.from_tensor_slices((X.values, y.values))
list = [dataset, dataset2]
state, metrics = iterative_process.next(state, list)
print('round 1, metrics={}'.format(metrics))
错误信息如下:
回溯(最近一次通话):文件“/home/affectech/Desktop/Fed_son/Fed_son.py”,第 117 行,处于状态,metrics = iterative_process.next(state, list) 文件“/home/affectech/Desktop/Fed_son /venv/lib/python3.6/site-packages/tensorflow_federated/python/core/impl/utils/function_utils.py”,第 666 行,调用中 arg = pack_args(self._type_signature.parameter,args,kwargs,context)文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core/impl/utils/function_utils .py”,第 424 行,在 pack_args 上下文中)文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core/impl/utils/function_utils.py”,行346,在pack_args_into_anonymous_tuple result_elements.append((name, context.ingest(arg_value, elem_type))) 文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core/ impl/reference_executor.py”,第 629 行,在摄取中返回 to_representation_for_type(arg, type_spec, _handle_callable) 文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core/impl/reference_executor.py”,第 241 行,to_representation_for_type 中的 v 值文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages /tensorflow_federated/python/core/impl/reference_executor.py”,第 241 行,in for v in value File “/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core /impl/reference_executor.py”,第 200 行,to_representation_for_type 中的 v 值文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core/impl/reference_executor. py”,第 200 行,在值文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core/impl/reference_executor.py”中,第 192 行,在 to_representation_for_type callable_handler) 文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site-packages/tensorflow_federated/python/core/impl/reference_executor.py”,第 165 行,在 to_representation_for_type '类型规范 { }.'.format(inferred_type_spec, type_spec)) TypeError:值表示的张量类型float32[15]与类型spec float32[?,15]不匹配。
进程以退出代码 1 结束