解决了以下错误:
1.ValueError: Input 0 is incompatible with layer conv1d_1: expected ndim=3, found ndim=4
2.ValueError: Error when checking target: expected dense_3 to have 3 dimensions, but got array with …
1.ValueError: Input 0 is incompatible with layer conv1d_1: expected ndim=3, found ndim=4
错误代码:
model.add(Conv1D(8, kernel_size=3, strides=1, padding='same', input_shape=(x_train.shape))
或者
model.add(Conv1D(8, kernel_size=3, strides=1, padding='same', input_shape=(x_train.shape[1:])))
这是因为模型输入的维数有误,在使用基于tensorflow的keras中,cov1d的input_shape是二维的,应该:
1、reshape x_train的形状
x_train=x_train.reshape((x_train.shape[0],x_train.shape[1],1))
x_test = x_test.reshape((x_test.shape[0], x_test.shape[1],1))
2、改变input_shape
model = Sequential()
model.add(Conv1D(8, kernel_size=3, strides=1, padding='same', input_shape=(x_train.shape[1],1)))
大神原文:
The input shape is wrong, it should be input_shape = (1, 3253) for Theano or (3253, 1) for TensorFlow. The input shape doesn't include the number of samples.
Then you need to reshape your data to include the channels axis:
x_train = x_train.reshape((500000, 1, 3253))
Or move the channels dimension to the end if you use TensorFlow. After these changes it should work.
2.ValueError: Error when checking target: expected dense_3 to have 3 dimensions, but got array with …
出现此问题是因为ylabel的维数与x_train x_test不符,既然将x_train x_test都reshape了,那么也需要对y进行reshape。
解决办法:
同时对照x_train改变ylabel的形状
t_train=t_train.reshape((t_train.shape[0],1))
t_test = t_test.reshape((t_test.shape[0],1))
附:
修改完的代码:
import warnings warnings.filterwarnings("ignore") import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" import pandas as pd import numpy as np import matplotlib # matplotlib.use('Agg') import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn import preprocessing from keras.models import Sequential from keras.layers import Dense, Dropout, BatchNormalization, Activation, Flatten, Conv1D from keras.callbacks import LearningRateScheduler, EarlyStopping, ModelCheckpoint, ReduceLROnPlateau from keras import optimizers from keras.regularizers import l2 from keras.models import load_model df_train = pd.read_csv('./input/train_V2.csv') df_test = pd.read_csv('./input/test_V2.csv') df_train.drop(df_train.index[[2744604]],inplace=True)#去掉nan值 df_train["distance"] = df_train["rideDistance"]+df_train["walkDistance"]+df_train["swimDistance"] # df_train["healthpack"] = df_train["boosts"] + df_train["heals"] df_train["skill"] = df_train["headshotKills"]+df_train["roadKills"] df_test["distance"] = df_test["rideDistance"]+df_test["walkDistance"]+df_test["swimDistance"] # df_test["healthpack"] = df_test["boosts"] + df_test["heals"] df_test["skill"] = df_test["headshotKills"]+df_test["roadKills"] df_train_size = df_train.groupby(['matchId','groupId']).size().reset_index(name='group_size') df_test_size = df_test.groupby(['matchId','groupId']).size().reset_index(name='group_size') df_train_mean = df_train.groupby(['matchId','groupId']).mean().reset_index() df_test_mean = df_test.groupby(['matchId','groupId']).mean().reset_index() df_train = pd.merge(df_train, df_train_mean, suffixes=["", "_mean"], how='left', on=['matchId', 'groupId']) df_test = pd.merge(df_test, df_test_mean, suffixes=["", "_mean"], how='left', on=['matchId', 'groupId']) del df_train_mean del df_test_mean df_train = pd.merge(df_train, df_train_size, how='left', on=['matchId', 'groupId']) df_test = pd.merge(df_test, df_test_size, how='left', on=['matchId', 'groupId']) del df_train_size del df_test_size target = 'winPlacePerc' train_columns = list(df_test.columns) """ remove some columns """ train_columns.remove("Id") train_columns.remove("matchId") train_columns.remove("groupId") train_columns_new = [] for name in train_columns: if '_' in name: train_columns_new.append(name) train_columns = train_columns_new # print(train_columns) X = df_train[train_columns] Y = df_test[train_columns] T = df_train[target] del df_train x_train, x_test, t_train, t_test = train_test_split(X, T, test_size = 0.2, random_state = 1234) # scaler = preprocessing.MinMaxScaler(feature_range=(-1, 1)).fit(x_train) scaler = preprocessing.QuantileTransformer().fit(x_train) x_train = scaler.transform(x_train) x_test = scaler.transform(x_test) Y = scaler.transform(Y) x_train=x_train.reshape((x_train.shape[0],x_train.shape[1],1)) x_test = x_test.reshape((x_test.shape[0], x_test.shape[1],1)) t_train=t_train.reshape((t_train.shape[0],1)) t_test = t_test.reshape((t_test.shape[0],1)) model = Sequential() model.add(Conv1D(8, kernel_size=3, strides=1, padding='same', input_shape=(x_train.shape[1],1))) model.add(BatchNormalization()) model.add(Conv1D(8, kernel_size=3, strides=1, padding='same')) model.add(Conv1D(16, kernel_size=3, strides=1, padding='valid')) model.add(BatchNormalization()) model.add(Conv1D(16, kernel_size=3, strides=1, padding='same')) model.add(Conv1D(32, kernel_size=3, strides=1, padding='valid')) model.add(BatchNormalization()) model.add(Conv1D(32, kernel_size=3, strides=1, padding='same')) model.add(Conv1D(32, kernel_size=3, strides=1, padding='same')) model.add(Conv1D(64, kernel_size=3, strides=1, padding='same')) model.add(Activation('tanh')) model.add(Flatten()) model.add(Dropout(0.5)) # model.add(Dropout(0.25)) model.add(Dense(512,kernel_initializer='he_normal', activation='relu', W_regularizer=l2(0.01))) model.add(Dense(128,kernel_initializer='he_normal', activation='relu', W_regularizer=l2(0.01))) model.add(Dense(1, kernel_initializer='normal', activation='sigmoid')) optimizers.Adam(lr=0.01, epsilon=1e-8, decay=1e-4) model.compile(optimizer=optimizer, loss='mse', metrics=['mae']) model.summary() ng = EarlyStopping(monitor='val_mean_absolute_error', mode='min', patience=4, verbose=1) # model_checkpoint = ModelCheckpoint(filepath='best_model.h5', monitor='val_mean_absolute_error', mode = 'min', save_best_only=True, verbose=1) # reduce_lr = ReduceLROnPlateau(monitor='val_mean_absolute_error', mode = 'min',factor=0.5, patience=3, min_lr=0.0001, verbose=1) history = model.fit(x_train, t_train, validation_data=(x_test, t_test), epochs=30, batch_size=32768, callbacks=[early_stopping], verbose=1)predict(Y) pred = pred.ravel()
补充知识:Keras Conv1d 参数及输入输出详解
Conv1d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)
filters:卷积核的数目(即输出的维度)
kernel_size: 整数或由单个整数构成的list/tuple,卷积核的空域或时域窗长度
strides: 整数或由单个整数构成的list/tuple,为卷积的步长。任何不为1的strides均为任何不为1的dilation_rata均不兼容
padding: 补0策略,为”valid”,”same”或”casual”,”casual”将产生因果(膨胀的)卷积,即output[t]不依赖于input[t+1:]。当对不能违反事件顺序的时序信号建模时有用。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
activation:激活函数,为预定义的激活函数名,或逐元素的Theano函数。如果不指定该函数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
model.add(Conv1D(filters=nn_params["input_filters"], kernel_size=nn_params["filter_length"], strides=1, padding='valid', activation=nn_params["activation"], kernel_regularizer=l2(nn_params["reg"])))
例:输入维度为(None,1000,4)
第一维度:None
第二维度:
output_length = int((input_length - nn_params["filter_length"] + 1))
在此情况下为:
output_length = (1000 + 2*padding - filters +1)/ strides = (1000 + 2*0 -32 +1)/1 = 969
第三维度:filters
以上这篇解决keras使用cov1D函数的输入问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
keras,cov1D函数,输入
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章