';类型错误:';浮动';对象不能解释为整数';Python3.7.1编写简单GAN时出错
我是Python和编程的新手。我正在尝试编写一个简单的';类型错误:';浮动';对象不能解释为整数';Python3.7.1编写简单GAN时出错,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,我是Python和编程的新手。我正在尝试编写一个简单的GAN代码来使用Keras数据集(请参见下面教程的超链接)。 我收到两个警告,然后是一个错误: TypeError: 'float' object cannot be interpreted as an integer. 任何帮助都将不胜感激 详细信息: Python 3.7.1,Mac OS High Sierra 10.13.6。我使用IDLE编写Python代码,并通过终端运行程序 错误 警告:tensorflow:From/User
GAN
代码来使用Keras
数据集(请参见下面教程的超链接)。
我收到两个警告,然后是一个错误:
TypeError: 'float' object cannot be interpreted as an integer.
任何帮助都将不胜感激
详细信息:
Python 3.7.1,Mac OS High Sierra 10.13.6。我使用IDLE编写Python代码,并通过终端运行程序
错误
警告:tensorflow:From/Users/darren/miniconda3/lib/python3.7/site packages/tensorflow/python/framework/op_def_library.py:263:colocate_with(来自tensorflow.python.framework.ops)已被弃用,并将在未来版本中删除
更新说明:
由placer自动处理Colocations
警告:tensorflow:From/Users/darren/miniconda3/lib/python3.7/site packages/keras/backend/tensorflow_backend.py:3445:不推荐使用keep_prob调用dropout(来自tensorflow.python.ops.nn_ops)并将在未来版本中删除
更新说明:
请使用rate
而不是keep\u prob
。应将速率设置为Rate=1-keep_prob
---------------第一纪元---------------
回溯(最近一次呼叫最后一次):
文件“gan.py”,第91行,在
列车(400128)文件“gan.py”,第75行,列车中
对于tqdm中的u(范围(批次计数)):
TypeError:“float”对象不能解释为整数
代码:
import os
import numpy as np
import matplotlib.pyplot as plt
from tqdm import tqdm
from keras.layers import Input
from keras.models import Model, Sequential
from keras.layers.core import Dense, Dropout
from keras.layers.advanced_activations import LeakyReLU
from keras.datasets import mnist
from keras.optimizers import Adam
from keras import initializers
os.environ["KERAS_BACKEND"] = "tensorflow"
np.random.seed(10)
random_dim = 100
def load_minst_data():
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = (x_train.astype(np.float32) - 127.5)/127.5
x_train = x_train.reshape(60000, 784)
return (x_train, y_train, x_test, y_test)
def get_optimizer():
return Adam(lr=0.0002, beta_1=0.5)
def get_generator(optimizer):
generator = Sequential()
generator.add(Dense(256, input_dim=random_dim, kernel_initializer=initializers.RandomNormal(stddev=0.02)))
generator.add(LeakyReLU(0.2))
generator.add(Dense(512))
generator.add(LeakyReLU(0.2))
generator.add(Dense(1024))
generator.add(LeakyReLU(0.2))
generator.add(Dense(784, activation='tanh'))
generator.compile(loss='binary_crossentropy', optimizer=optimizer)
return generator
def get_discriminator(optimizer):
discriminator = Sequential()
discriminator.add(Dense(1024, input_dim=784, kernel_initializer=initializers.RandomNormal(stddev=0.02)))
discriminator.add(LeakyReLU(0.2))
discriminator.add(Dropout(0.3))
discriminator.add(Dense(512))
discriminator.add(LeakyReLU(0.2))
discriminator.add(Dropout(0.3))
discriminator.add(Dense(256))
discriminator.add(LeakyReLU(0.2))
discriminator.add(Dropout(0.3))
discriminator.add(Dense(1, activation='sigmoid'))
discriminator.compile(loss='binary_crossentropy', optimizer=optimizer)
return discriminator
def get_gan_network(discriminator, random_dim, generator, optimizer):
discriminator.trainable = False
gan_input = Input(shape=(random_dim,))
x = generator(gan_input)
gan_output = discriminator(x)
gan = Model(inputs=gan_input, outputs=gan_output)
gan.compile(loss='binary_crossentropy', optimizer=optimizer)
return gan
def plot_generated_images(epoch, generator, examples=100, dim=(10, 10), figsize=(10, 10)):
noise = np.random.normal(0, 1, size=[examples, random_dim])
generated_images = generator.predict(noise)
generated_images = generated_images.reshape(examples, 28, 28)
plt.figure(figsize=figsize)
for i in range(generated_images.shape[0]):
plt.subplot(dim[0], dim[1], i+1)
plt.imshow(generated_images[i], interpolation='nearest', cmap='gray_r')
plt.axis('off')
plt.tight_layout()
plt.savefig('gan_generated_image_epoch_%d.png' % epoch)
def train(epochs=1, batch_size=128):
x_train, y_train, x_test, y_test = load_minst_data()
batch_count = x_train.shape[0] / batch_size
adam = get_optimizer()
generator = get_generator(adam)
discriminator = get_discriminator(adam)
gan = get_gan_network(discriminator, random_dim, generator, adam)
for e in range(1, epochs+1):
print ('-'*15, 'Epoch %d' % e, '-'*15)
for _ in tqdm(range(batch_count)):
noise = np.random.normal(0, 1, size=[batch_size, random_dim])
image_batch = x_train[np.random.randint(0, x_train.shape[0], size=batch_size)]
generated_images = generator.predict(noise)|
X = np.concatenate([image_batch, generated_images])
y_dis = np.zeros(2*batch_size)
y_dis[:batch_size] = 0.9
discriminator.trainable = True
discriminator.train_on_batch(X, y_dis)
noise = np.random.normal(0, 1, size=[batch_size, random_dim])
y_gen = np.ones(batch_size)
discriminator.trainable = False
gan.train_on_batch(noise, y_gen)
if e == 1 or e % 20 == 0:
plot_generated_images(e, generator)
if __name__ == '__main__':
train(400, 128)
问题来自生产线
x\u系列。形状[0]/batch\u尺寸
。
默认情况下,在python3的较新版本中,/
运算符执行浮点除法,而不是div
如果希望结果为整数,则应改为使用/
运算符,其行为类似于div
:
x\u train.shape[0]//批处理大小
在循环前添加调试语句,for u.in.
,并打印变量批处理计数的类型。要使循环正常工作,它应该是一个int
能否请您给我一个示例作为一行代码?打印(类型(批次计数))
。同时考虑阅读:谢谢!我将阅读并添加这些声明。谢谢Eric!我能够克服这个错误,但当程序运行时它崩溃了,我得到了这个错误:“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[NSApplication\u setup:::]:未识别的选择器发送到实例0x7fcba9772980'”这是因为我的代码没有上面提到的调试语句吗?您面临的新错误还有其他原因。调试语句是临时添加的代码行,您可以在错误发生之前或之后更好地了解程序的状态。