Tensorflow 实验数据集
我有下面的代码,我正在尝试,这对培训工作很好 作为练习,我尝试将其转换为数据集并在数据集上进行训练,但没有成功Tensorflow 实验数据集,tensorflow,tf.keras,Tensorflow,Tf.keras,我有下面的代码,我正在尝试,这对培训工作很好 作为练习,我尝试将其转换为数据集并在数据集上进行训练,但没有成功 def gen_labels(series, nums): raw_labels=[] labels =[] for i in range(0,nums): sum = 0 for j in range(0,28): for k in range(0,28): sum+=(math.cos(series[i][j]
def gen_labels(series, nums):
raw_labels=[]
labels =[]
for i in range(0,nums):
sum = 0
for j in range(0,28):
for k in range(0,28):
sum+=(math.cos(series[i][j][k])+j*2-k*2)*(math.sin(series[i][j][k])+j*2-k*2)
n = random.random()
sum = sum+(n-0.5)*28*28*100
raw_labels.append(sum)
if sum > 405000:
sum = 1.0
else:
sum = 0.0
labels.append(sum)
print(raw_labels)
return np.asarray(labels)
num_samples = 100
series = np.random.rand(num_samples,28,28)
labels = gen_labels(series,num_samples)
valid_series = np.random.rand(num_samples,28,28)
valid_labels = gen_labels(valid_series,num_samples)
input = tf.keras.layers.Input((28,28,1))
x = tf.keras.layers.Conv2D(64, (3,3), activation="relu")(input)
x = tf.keras.layers.Flatten()(x)
model = tf.keras.Model(input, x)
model.compile(loss='mse',
optimizer='adam',
metrics=['accuracy'])
history = model.fit(series, labels, epochs=30,verbose=2, validation_data = (valid_series, valid_labels))
我尝试了一些方法,例如尝试合并系列和标签,但没有成功:
train_ds = tf.data.Dataset.from_tensor_slices(series)
...
history = model.fit(train_ds, epochs=30,verbose=2, validation_data = vtrain_ds)
我最后一次尝试的是制作我的系列a(100,28,28,1)形状,并将结果存储在最后一个维度上
def gen_labels(series, nums):
raw_labels=[]
labels =[]
series = np.expand_dims(series, axis=-1)
for i in range(0,nums):
sum = 0
for j in range(0,28):
for k in range(0,28):
sum+=(math.cos(series[i][j][k])+j*2-k*2)*(math.sin(series[i][j][k])+j*2-k*2)
n = random.random()
sum = sum+(n-0.5)*28*28*100
raw_labels.append(sum)
if sum > 405000:
sum = 1.0
else:
sum = 0.0
labels.append(sum)
series[i][j][k][0] = sum
print(series)
return series
但在培训时,我会得到:
警告:tensorflow:为输入KerasTensor传感器(type_spec=TensorSpec(shape=(None,28,28,1),dtype=tf.float32,name='input_6'),name='input_6',description=(由层'input_6'创建)构建了该模型,但在具有不兼容形状(28,28,1,1)的输入上调用了该模型
最初,我想做一些类似于timeseries的事情,我将使用map方法ie将最后一列放入一个单独的维度中
dataset = dataset.map(lambda w: (w[:-1], w[1:]))
如果我想在这种情况下使用数据集,您认为最好的方法是什么?不确定数据是什么,但在创建数据集时需要指定标签,例如:
train\ds=tf.data.dataset.from\u tensor\u切片((系列,标签))
此外,如果这是一个二进制分类问题,使用loss='binary\u crossentropy'
更合适
您还需要使用data重塑数据。重塑(28,28,1)
最后,应该停止使用变量名,如sum
和input
。这些是保留关键字,在其中存储变量可能会导致意外结果
这样创建数据集应该是可行的。需要批处理数据集。在本例中,系列
的形状为(n_样本,28,28,1)
不确定数据是什么,但在创建数据集时需要指定标签,例如:
train\u ds=tf.data.dataset.from\u tensor\u切片((系列,标签))
此外,如果这是一个二进制分类问题,使用loss='binary\u crossentropy'
更合适
您还需要使用data重塑数据。重塑(28,28,1)
最后,应该停止使用变量名,如sum
和input
。这些是保留关键字,在其中存储变量可能会导致意外结果
这样创建数据集应该是可行的。需要批处理数据集。在本例中,系列
的形状为(n_样本,28,28,1)
谢谢,我真的很感谢你的总结和意见以及。我想知道是否有一个约定或一个已知关键字的列表我应该避免。关于数据。重塑(28,28,21)是一个系列。重塑(28,28,1)我尝试了28,28,1的系列,但它看起来很奇怪,所以我尝试了(100,28,28,1),这是没有成功的输入数,我目前正在检查数据集api,看看是否有什么是的,您应该将形状改为(100,28,28,1)。您还需要替换原始变量,如下所示:series=series.reformate(100,28,28,1)。至于命名,您可以在代码部分中看到保留关键字是橙色的。避免使用这些词。谢谢,我想我没有得到颜色,因为我的编辑会马上与pycharm核实。关于重塑,如果我做(100,28,28,1),tensorflow会抱怨拟合方法的形状是(28,28,1,1),但如果我不做重塑,它会抱怨形状是(28,28)编辑的我的答案。你需要批处理你的数据集。谢谢。我真的很感谢你对总和和输入的评论。我想知道是否有一个约定或一个已知关键字的列表我应该避免。关于数据。重塑(28,28,21)是一个系列。重塑(28,28,1)我尝试了28,28,1的系列,但它看起来很奇怪,所以我尝试了(100,28,28,1),这是没有成功的输入数,我目前正在检查数据集api,看看是否有什么是的,您应该将形状改为(100,28,28,1)。您还需要替换原始变量,如下所示:series=series.reformate(100,28,28,1)。至于命名,您可以在代码部分中看到保留关键字是橙色的。避免使用这些词。谢谢,我想我没有得到颜色,因为我的编辑会马上与pycharm核实。关于重塑,如果我做(100,28,28,1),tensorflow会抱怨拟合方法的形状是(28,28,1,1),但如果我不做重塑,它会抱怨形状是(28,28)编辑的我的答案。您需要批处理数据集。
train_ds = tf.data.Dataset.from_tensor_slices((series,labels)).batch(5)
valid_ds = tf.data.Dataset.from_tensor_slices((valid_series,valid_labels)).batch(5)