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

联合学习时的张量型错误

薛涛
2023-03-14

我试图使用tenstorflow联邦学习工具为我的数据。我有两个数据集(dataset和dataset2)从csv文件中获得,其中前15列是功能,最后一列是标签。我将我的熊猫数据帧转换为tenstorflow数据集。然而,在迭代器处,有一个奇怪的类型错误。我是新来的tenrflow和发送代码:任何帮助将不胜感激。提前感谢。

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行,处于状态,度量=迭代过程。下一个(状态,列表)文件“/home/affectech/Desktop/Fed_son/venv/lib/python3.6/site packages/tensorflow_federated/python/core/impl/utils/function_utils.py”,第666行,在call arg=pack_args(self.\u type_signature.parameter,args,kwargs,context)文件中“/home/affectech/Desktop/Fed_son/venv/lib/python3。6/站点包/tensorflow\u federed/python/core/impl/utils/function\u utils。py”,第424行,在pack_args上下文)文件“/home/affectech/Desktop/Fed_son/venv/lib/python3中。6/站点包/tensorflow\u federed/python/core/impl/utils/function\u utils。py“,第346行,在pack_args_to_anonymous_tuple result_elements.append((名称、上下文、摄取(arg_值、元素类型)))文件“/home/affectech/Desktop/Fed_son/venv/lib/python3中。6/站点包/tensorflow\u federated/python/core/impl/reference\u executor。py”,第629行,在摄取返回到表示文件中,表示文件类型(参数,类型规格,句柄可调用)/主页/影响技术/桌面/Fed_-son/venv/lib/python3。6/站点包/tensorflow\u federated/python/core/impl/reference\u executor。py”,第241行,在值文件“/home/affectech/Desktop/Fed_son/venv/lib/python3中的v类型的to_表示中。6/站点包/tensorflow\u federated/python/core/impl/reference\u executor。py”,第241行,在值文件“/home/affectech/Desktop/Fed_son/venv/lib/python3中代表v。6/站点包/tensorflow\u federated/python/core/impl/reference\u executor。py”,第200行,在值文件“/home/affectech/Desktop/Fed_son/venv/lib/python3中的v类型的to_表示法中。6/站点包/tensorflow\u federated/python/core/impl/reference\u executor。py“,第200行,在值文件“/home/affectech/Desktop/Fed_son/venv/lib/python3中代表v。6/站点包/tensorflow\u federated/python/core/impl/reference\u executor。py”,第192行,在to_表示法中,用于_类型可调用的_处理程序)文件“/home/affectech/Desktop/Fed_son/venv/lib/python3。6/站点包/tensorflow\u federated/python/core/impl/reference\u executor。py“,第165行,在类型规范{}的to_表示法中。格式(推断的类型规范,类型规范))类型错误:值表示法的张量类型float32[15]与类型规范float32[?,15]不匹配。

退出代码1的过程结束

共有2个答案

晋坚
2023-03-14

我看到的一个问题是

X, y = train[:, :-2], train[:, -1]

您正在丢失此处的最后一个专题专栏,很可能是

X, y = train[:, :-1], train[:, -1]

使此脚本混淆的是函数体中对trainXy的重新定义。此程序永远不会出现您发布的错误,因为X2在使用时没有定义。我建议不要重复使用变量名作为一般规则,这将使程序更易于调试。

然后,当你收到关于某物形状的投诉时,在错误发生之前打印它(或它的一部分),这将有助于诊断错误。

袁赞
2023-03-14

看起来像是调用iterative_process.next(state, list)期望数据集列表(list)是批处理数据集列表。如果您不希望每个批处理有多个示例,批处理大小甚至可以是1

batch_size = 1
list = [dataset.batch(batch_size), dataset2.batch(batch_size)]

使用print(迭代\u过程.下一步.type\u签名)tf可以打印不同对象的类型。数据实验的获取结构(数据集)

 类似资料:
  • 我开始学习Spring,在做第一个项目时遇到了一个错误。 我得到了一个错误: 从ServletContext资源[/WEB-INF/spring-servlet.xml]解析XML文档时出现org.springframework.beans.factory.异常;嵌套异常java.lang.NoClassDefFoundError: org/spring框架/aop/TargetSource 这是

  • 本文向大家介绍Golang学习笔记(二):类型、变量、常量,包括了Golang学习笔记(二):类型、变量、常量的使用技巧和注意事项,需要的朋友参考一下 基本类型 1.基本类型列表 2.类型转换 不支持隐式类型转换,必须进行显式类型转换 转换只发生在两种互相兼容的类型之间: 各类int不允许相互赋值或操作,不然会在编译时报错 示例 结果 3.类型别名 4.类型默认值 声明不赋值,类型零值,非空值,而

  • 分配张量时如何解决ResourceExhaustedError: OOM的问题? ResourceExhaustedError(回溯见上文):使用形状分配张量时OOM[10000,32,28,28] 我包含了几乎所有的代码 错误中引用的行是: 快跑。。在训练循环中 下面列出了我从调试器输出复制的更多错误(有更多行,但我认为这些是主要错误,其他错误是由此引起的…) tensorflow.python

  • 分享面经攒攒人品!base西安 整个面试不到20minutes,不用手撕,感觉真就kpi面,主要是我的方向和他们也不太吻合。 自我介绍,项目细问+面试官介绍他们的业务和方向+反问。。。 面试官人很nice!月底出结果(说是投的人好多还得面好多),不过我面完就知道凉凉

  • 本文向大家介绍Python中集合类型(set)学习小结,包括了Python中集合类型(set)学习小结的使用技巧和注意事项,需要的朋友参考一下 set 是一个无序的元素集合,支持并、交、差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引、分片等类序列的操作。 初始化 运行结果: 提示 1.s0、d0:使用 {} 只能创建空字典,创建空集必须用 set(); 2.ss、sl:se

  • 本文向大家介绍Swift中内置的集合类型学习笔记,包括了Swift中内置的集合类型学习笔记的使用技巧和注意事项,需要的朋友参考一下 一、引言 Swift中提供了3种集合类型,Array数据类型,Set集合类型,Dictionary字典类型。Array用于存放一组有序的数据,数据角标从0开始一次递增;Set用于存放一组无序的数据,数据不可以重复;Dictionary也用于存放一组无序的数据,只是其是