AttributeError:“发电机”对象没有属性“形状”

如何解决AttributeError:“发电机”对象没有属性“形状”

我正在尝试构建一些自定义生成器,并将其返回值放入keras层中以进行浴池大小的训练。 它说我有一些属性问题,但是由于这个问题我遭受了超过5天的苦难,所以我不知道如何解决它。 你能帮我吗? 下面是代码。


from sys import stdout #for progressing bar function
import numpy as np
import tensorflow as tf
import keras
from sklearn.preprocessing import StandardScaler #Normalization
from keras.callbacks import EarlyStopping #EearlyStopping
from keras.callbacks import ModelCheckpoint #Extract best model from early stopping method
from keras.models import load_model #to load the saved model
from keras.models import Model #for 1d convolution network
from keras.layers import Input #for 1d convolution network
from keras.layers import Dense #for 1d convolution network
from keras.layers import Flatten #for 1d convolution network
from keras.layers import BatchNormalization #for vanishing gradient problem
from keras.layers import Dropout #for vanishing gradient problem
from keras.layers.convolutional import Conv1D #for 1d convolution network
from keras.layers.convolutional import MaxPooling1D #for 1d convolution network
from keras.layers.merge import concatenate
from keras.layers.experimental.preprocessing import Rescaling
from keras import backend as K  #for clearning flash memory and using GPU forcefully
from keras.utils import HDF5Matrix #Load HDF5
from keras.utils import Sequence #For batch generation
import h5py #Load HDF5
import matplotlib.pyplot as plt
import matplotlib

class Mygenerator(Sequence):
    def __init__(self,x_set,y_set,batch_size):
        self.x,self.y = np.array(x_set),np.array(y_set)
        self.batch_size = batch_size

    def __len__(self):
        return int(np.ceil(len(self.x[1]) / float(self.batch_size)))

    def __getitem__(self,idx):
          X = np.array(self.x[:][int(idx * self.batch_size):int((idx + 1) * self.batch_size)[:]])
          y = np.array(self.y[:][int(idx * self.batch_size):int((idx + 1) * self.batch_size)])

          yield X,y

X_tr_list = HDF5Matrix("/content/gdrive/My Drive/contest/data/X_train_set.hdf5","data")
Y_tr = HDF5Matrix("/content/gdrive/My Drive/contest/data/Y_train_set.hdf5","data") 
X_te_list = HDF5Matrix("/content/gdrive/My Drive/contest/data/X_test_set.hdf5","data")
Y_te = HDF5Matrix("/content/gdrive/My Drive/contest/data/Y_test_set.hdf5","data") 

#Training

input_x = list()
output_y = list()

if g == 0: #The inintial training

  print("Sangwoo : Model set up of the input parts begins!")
  for i in range(14400):

      visible = Input(shape=(n_steps,n_features))
      cnn = Conv1D(filters=24,kernel_size=2,activation= lambda x : tf.nn.leaky_relu(x,alpha=0.2))(visible)
      cnn = MaxPooling1D(pool_size=2)(cnn)
      cnn_output = Flatten()(cnn)
    
      input_x.append(visible)
      output_y.append(cnn_output)
    
      update_progress(i/(14400))

  print("Sangwoo : Model set up of the output parts begins!")

  # merge input models
  merge = concatenate([output_y[s] for s in range(len(output_y))])

  listDense = list()

  for x in range(7):  #len(floodplain)
      output = Dense(1,alpha=0.2),name="output{}".format(x+1))(dense)
      listDense.append(output)
      update_progress((x+1)/7)

  model = Model(inputs=input_x,outputs=listDense)

  model.compile(optimizer='adam',loss='mse')

  #model.summary()

  #averaging loss and accuracy
  checkpoint = MergeMetrics()

  #early stopping
  es = EarlyStopping(monitor='val_loss',patience=10) 
  best = ModelCheckpoint(filepath='/content/gdrive/My Drive/contest/best_model.h5',monitor='val_loss',save_best_only=True)

  print("Sangwoo : The training begins!") 
  print("X_tr_list",(np.shape(X_tr_list[1]),"Y_tr_list",(np.shape(Y_tr[1]))))
  # fit model
  #hist = model.fit([X_tr_list[i] for i in range(len(X_tr_list))],[Y_tr[i] for i in range(Y_tr.shape[0])],epochs=1000,verbose=1,callbacks=[checkpoint,es,best],validation_data = ([X_te_list[x] for x in range(len(X_te_list))],[Y_te[i] for i in range(Y_te.shape[0])]))
  hist = model.fit(Mygenerator([X_tr_list[i] for i in range(len(X_tr_list))],32),steps_per_epoch=(X_tr_list.shape[1]//32),validation_data=Mygenerator([X_te_list[i] for i in range(len(X_te_list))],[Y_te[i] for i in range(Y_te.shape[0])],32))
  fig = plt.figure()

错误消息如下所示。

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in __init__(self,x,y,sample_weights,workers,use_multiprocessing,max_queue_size,model,**kwargs)
    794           lambda x: model(x,training=False),args=(concrete_x,))
    795 
--> 796     self._first_batch_size = int(nest.flatten(peek)[0].shape[0])
    797 
    798     def _get_dynamic_shape(t):

AttributeError: 'generator' object has no attribute 'shape'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-